我想我误解了FileChannel的锁定功能是如何工作的。
我希望对一个文件有一个独占的写锁,但是允许从任何进程读取。
在运行Java 7的Windows 7机器上,我可以让FileChannel的锁工作,但它可以防止其他进程的读写。
如何实现不允许写入但允许其他进程读取的文件锁?
发布于 2014-03-25 23:31:16
FileChannel.lock()处理的是文件区域,而不是文件本身。我想你正在寻找一个有点不同的特性-打开一个文件进行写入,同时允许其他进程打开它以供阅读,而不是用于写入。
这可以通过具有非标准开放选项的Java7 FileChannel.open API实现:
import static java.nio.file.StandardOpenOption.*;
import static com.sun.nio.file.ExtendedOpenOption.*;
...
Path path = FileSystems.getDefault().getPath("noshared.tmp");
FileChannel fc = FileChannel.open(path, CREATE, WRITE, NOSHARE_WRITE);注意,ExtendedOpenOption.NOSHARE_WRITE是Oracle中存在的一个非标准选项。
https://stackoverflow.com/questions/22646598
复制相似问题