Javaでやや大きなファイルを読み取って処理する必要があります。ファイルを読み取って処理しているときに、他のプロセスによって上書きされないようにファイルを保護するための賢明な方法があるかどうかを知りたいのですが。
つまり、読み取り専用にするための何らかの方法で、「開いた」状態に保つか、何か...
これはWindows環境で行われます。
br、トウコ
Javaでやや大きなファイルを読み取って処理する必要があります。ファイルを読み取って処理しているときに、他のプロセスによって上書きされないようにファイルを保護するための賢明な方法があるかどうかを知りたいのですが。
つまり、読み取り専用にするための何らかの方法で、「開いた」状態に保つか、何か...
これはWindows環境で行われます。
br、トウコ
FileLockが必要です:
FileChannel channel = new RandomAccessFile("C:\\foo", "rw").getChannel();
// Try acquiring the lock without blocking. This method returns
// null or throws an exception if the file is already locked.
FileLock lock = channel.tryLock();
// ...
// release it
lock.release();
簡単にするために、enclosng try / finallyブロックを省略しましたが、本番コードには含めないでください。
ロックは完全に絶対的ではないように思われるため、ほとんど正常に動作し、いくつかの問題が発生しました。