我需要在一個臨時文件中寫入一些數據,這個文件存儲在一個目錄答:我用File.createTempFile方法來做到這一點。但是,有一個線程會定期輪詢目錄A以檢查是否有臨時文件需要處理。設置文件不可讀
// create a temporary file that will contain the data
newTmpFile = File.createTempFile("prefix", recoverFileExt, new File(
recoverDirectory));
// the file is set to non readable, so the recovery thread cannot
// access it
newTmpFile.setReadable(false);
//write data into the file
// the file is written, it is set to readable so the recovery thread
// can now access it
newTmpFile.setReadable(true);
的問題是,我不想做寫入操作之前,恢復線程訪問該文件。所以,我使用這種機制:我創建該文件,將其設置爲不可讀,寫入,然後將其設置爲可讀並關閉它。問題是,在文件創建後,文件仍然可讀,線程可以訪問它。
所以,我想知道是否有設置該文件作爲非可讀在其創建的可能性,或者如果你有其他的解決方案。
感謝
另請注意,如果目錄位於同一文件系統上,則可以在目錄之間快速重命名文件。 (這不是NFS推薦的,但NFS並不真正用於「數據完整性」。) –
我接受其設施的答案。但是,我知道使用文件名進行同步不是一個好習慣。 –