2011-09-24 45 views
1

在Java程序中創建File對象實例時,是否有可能使併發運行的程序也可以訪問該文件進行寫入?所以就像如果我有一個帶有example.txt路徑的File對象,另一個程序是否可以在我的File對象存在的同時寫入該example.txt文件?使用java.io.File類

回答

1

File f = new File("C:\\test.txt"); 

無助於該文件。所以任何其他線程或進程可以打開文件,如果他們喜歡。

它只是創建一個代表文件的對象,但不打開它或以其他方式觸摸它。

+0

所以當另一個程序寫入example.txt時,canRead方法會返回false,然後當它是空閒的,它會返回true? – Andrew

+0

@Andrew:可能不是。這取決於你的文件系統,但據我所知,Linux,Mac和Windows(即ext *和ntfs)不會阻止讀取,而另一個進程有一個文件可以寫入。如果你真的想要鎖定文件,那麼你需要使用'java.nio.channels.FileLock'類。 –

0

是的。擁有一個File實例與實際的文件系統無關,除非你調用其中的一個方法。實際上,您可以創建甚至不存在的路徑的File實例。

1

是的,因爲Java中的File對象實際上只代表文件系統路徑。它實際上不是一個文件句柄,它在底層資源上具有鎖定語義。您甚至可以將File實例創建爲不存在的資源。

2

如果你有寫,

File f=new File("example.txt"); 

這意味着,你只創建了一個文件對象,但根據給定path.Also該文件對象在虛擬內存(Java的你的硬盤上沒有創建的文件)。如果其他已經加載到虛擬內存中的應用程序可以訪問或調用文件對象的引用,那麼該應用程序可以訪問文件對象。
如果您創建了一個文件,

f.createNewFile(); 

再有就是在您的硬盤disk.Then一個真正的文件任何其他應用程序可以訪問它在你的硬盤的其他文件。你會看到here

相關問題