2010-06-02 18 views
1

我試圖通過Java 6 OSX得到跨越掛載點文件鎖定:在java中打開的文件可以通過afp掛載進行鎖定嗎?

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掛載來鎖定文件的方法?

回答

1

你得到的例外說這一切IOException (Operation not supported)不同的文件系統有不同的功能,鎖定是其中之一。維基百科Comparison of file systems雖然沒有提到鎖定,但這確實說明了這一點。

當您通過SMB或AFP訪問文件時,您正在有效地將這些文件用作文件系統,而且它們是功能不是很豐富的文件系統。不幸的是,你不能認爲存儲文件的實際文件系統的所有功能都可以通過SMB或AFP獲得。

SMB協議的目標是提供對文件,打印機和網絡上的類似的共享訪問,因爲網絡上的設備是異構的協議限制了它的功能,以得到最普遍支持的功能。

相關問題