1

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

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

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

4

2 回答 2

2

我对此并不肯定,但您可以尝试java.io.FileInputStream,或该软件包中的其他选项。

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

  1. 如何使用 Java 从正在写入的文件中读取?
  2. 在写入文件时读取文件
  3. 在写入文件时读取文件
  4. 在写入文件时从文件中读取数据
于 2013-03-12T02:52:47.003 回答
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();
}
于 2013-03-12T02:19:01.367 回答