我正在尝试使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