我正试图通过OSX上的Java 6在挂载点上获取文件锁:
private void tryLockThroughShare() {
String path = "/Volumes/Groups/mcm/javaTestInShare.txt";
try {
RandomAccessFile raf = new RandomAccessFile(path, "rw");
FileLock flock = raf.getChannel().tryLock();
System.out.printf("File %s is %s\n", path, (flock != null) ?
("locked") : ("not locked"));
raf.write("yoo hoo!".getBytes());
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
当我使用AFP或SMB安装卷时,即使我可以写文件 在安装的目的地,我无法锁定它们,而是接收: IOException(不支持操作)。
经过一些实验,我发现在设置音量时我可以锁定 使用NFS。
有没有人找到通过SMB或AFP挂载锁定文件的方法?
答案 0 :(得分:1)
你得到的例外就是IOException (Operation not supported)
。 不同的文件系统具有不同的功能,锁定就是其中之一。维基百科Comparison of file systems虽然它没有提到锁定确实使这一点清楚。
当您通过SMB或AFP访问文件时,您实际上将它们用作文件系统,并且它们是功能不是很丰富的文件系统。遗憾的是,您无法假设存储文件的实际文件系统的所有功能都可通过SMB或AFP获得。
SMB协议的目标是提供对网络上文件,打印机等的共享访问,因为网络上的设备是异构的,协议将其功能限制为最普遍支持的功能。