我正在使用fileChannel.lock(long position, long size, boolean shared)来获得对该文件特定部分的互斥访问。确切的代码是:

fileChannel.lock(3458, 128, false);


但是不幸的是,当我试图通过不同的过程更改文件中的任何位置时,它抛出异常,表明文件已锁定。但是我的期望是它应该允许我更改文件中除锁定部分之外的任何部分。

有人可以帮助我找出我做错了什么吗?



有关我的设置的一些详细信息:

操作系统详细信息:

Mac OS X Lion 10.7.5


处理细节:


锁定文件特定部分的Java进程
试图在与锁定部分不同的部分更改文件的TextWrangler。但是失败了。

最佳答案

FileChannel.lock方法高度依赖于OS。而且,在UNIX平台上您没有任何文件锁定。这就是为什么它可能无法在Mac OS X上运行的原因,因为它是基于UNIX的。

10-08 13:37