在阅读之前检查文件是否已打开?

时间:2013-03-12 02:00:31

标签: java applet

我正在尝试制作一个applet,它以非常频繁的间隔(几秒一次)读取本地文件系统(用户计算机)上的文件,然后通过网页将文件内容提供给网页JavaScript的。

applet需要读取的文件由用户计算机上的程序以高频率更新。我关心的是如果applet在文件处于更新状态时从文件中读取数据,可能会发生什么。

我不知道这有多大可能,但如果它是一个有效的问题,有没有办法确保在阅读之前当前没有写入该文件?

2 个答案:

答案 0 :(得分:2)

我对此并不乐观,但您可以尝试java.io.FileInputStream或该套餐中的其他选项。

此外,这个问题可能是重复的。这可能会回答您的问题:

  1. How do I use Java to read from a file that is actively being written?
  2. reading a file while it's being written
  3. Read a file while it's being written
  4. Reading data from a File while it is being written to

答案 1 :(得分:1)

它是非常怪物进行这样的磁盘访问,任何方式尝试套接字,如果你可以或如果你再坐下来尝试锁定文件的两端,如果其中一个锁定失败,然后确保其他锁定,弥补这对你的使用

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();
}