我正在嘗試使applet以非常頻繁的間隔(每秒幾次)讀取本地文件系統(用戶計算機)上的文件,然後通過javascript將該文件的內容提供給網頁。在閱讀文件之前檢查文件是否打開?
小程序需要讀取的文件由用戶計算機上的程序以高頻率更新。我擔心的是,如果applet在文件正在更新時讀取文件中的數據,可能會發生什麼情況。
我不知道這是多麼可能,但如果這是一個有效的擔憂,有沒有辦法確保該文件在讀取之前未被寫入?
我正在嘗試使applet以非常頻繁的間隔(每秒幾次)讀取本地文件系統(用戶計算機)上的文件,然後通過javascript將該文件的內容提供給網頁。在閱讀文件之前檢查文件是否打開?
小程序需要讀取的文件由用戶計算機上的程序以高頻率更新。我擔心的是,如果applet在文件正在更新時讀取文件中的數據,可能會發生什麼情況。
我不知道這是多麼可能,但如果這是一個有效的擔憂,有沒有辦法確保該文件在讀取之前未被寫入?
我還不能肯定這一點,但你可以嘗試java.io.FileInputStream
,或從包中的一些其他選項。
此外,這個問題可能是重複的。這可能會回答你的問題:
它的非常怪物讓這樣的磁盤訪問,任何方式嘗試套接字,如果你可以或者如果你再次坐回試圖鎖定文件的兩端,如果其中一個鎖定失敗,然後確保其他鎖定,使了這個你使用
File file = new File(fileName);
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
// Get an exclusive lock on the whole file
FileLock lock = channel.lock();
try {
lock = channel.tryLock();
// Ok. You get the lock
} catch (OverlappingFileLockException e) {
// File is open by other end
} finally {
lock.release();
}
我的感覺是,直到你不保存文件的磁盤將有舊的副本,並將其將讀取較舊的文件。 – kaysush 2013-03-12 02:06:25
@SuKu - 用戶計算機上運行的程序會以高頻率覆蓋文件的內容。這是我的擔心。我想知道applet是否可以在被覆蓋的過程中讀取文件。 – Nate 2013-03-12 02:11:18
你可以閱讀文件,只要你沒有得到一個例外,那個文件已經被使用了,如果你讀了一些舊文件,你就沒有任何問題。 – kaysush 2013-03-12 02:15:26