Topic: 怎麼樣打開一個文件,然後把它鎖住,讓別人只能看不能修改? |
Print this page |
1.怎麼樣打開一個文件,然後把它鎖住,讓別人只能看不能修改? | Copy to clipboard |
Posted by: wymanlife Posted on: 2005-09-29 17:42 怎麼樣打開一個文件,然後把它鎖住,讓別人只能看不能修改? |
2.Re:怎麼樣打開一個文件,然後把它鎖住,讓別人只能看不能修改? [Re: wymanlife] | Copy to clipboard |
Posted by: zcjl Posted on: 2005-09-29 22:17 以下文字摘自TIJ 3rd Edition(翻译by shhgs)
|
3.Re:怎麼樣打開一個文件,然後把它鎖住,讓別人只能看不能修改? [Re: wymanlife] | Copy to clipboard |
Posted by: wymanlife Posted on: 2005-09-30 08:34 謝謝! 但是我用FileLock.tryLock()的時候,運行的時候報下面的錯誤: Exception in thread "Thread-2" java.nio.channels.NonWritableChannelException at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:818) at java.nio.channels.FileChannel.tryLock(FileChannel.java:967) at MyEdit.listener.OpenItemListener$FileLoader.run(OpenItemListener.java:91) 我是這樣子的,我是在Java程序裡打開一個文件(讀取了內容到JTextArea裡面)之後,然後,調用這個channel的FileLock.tryLock()。然後就報上面的錯了。 而且,當我再次用該同一程序打開同這個一個文件的時候,一樣可以對該文件進行修改。 為什麼呢? |
4.Re:怎麼樣打開一個文件,然後把它鎖住,讓別人只能看不能修改? [Re: wymanlife] | Copy to clipboard |
Posted by: zcjl Posted on: 2005-09-30 14:35 1.对于NonWritableChannelException,应该是你尝试锁定一个非可写的文件造成的 比如我这样写就会出现同样的异常: FileLock lock = new RandomAccessFile("e:/protocol.xml", "r").getChannel().tryLock(); 而代码修改如下,就会正常运行: FileLock lock = new RandomAccessFile("e:/protocol.xml", "rw").getChannel().tryLock(); 所以,要解决这个问题,还是仔细检查一下代码,当然,自己实在看不出原因,帖出来大家帮你也可以的 2.对于 當我再次用該同一程序打開同這個一個文件的時候,一樣可以對該文件進行修改 请仔细看我帖出来的这段文字: 但是,竞争文件的两个线程必须属于两个不同的JVM,或者一个是Java线程,另一个是操作系统的本地线程。由于Java的文件锁是直接映射操作系统的锁机制的,因此其它进程也能看到文件锁。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |