我想写入一个文件,该文件已被其他进程使用。
我的问题是:有没有办法避免 FilenotfoundException,并写入文件,尽管它正在使用中?
谢谢!
如果其他进程lock
在您的应用程序要使用的文件上获得了一个,您必须确保应用程序等待特定的时间,直到锁被释放。locking mechanism
完全取决于使用file
. 你可以试试这样的
FileInputStream fin = new FileInputStream("test.txt");
FileChannel channel = fin.getChannel();
FileLock lock = channel.tryLock();
if (lock != null) {
try {
// read the file
} finally {
lock.release();
}
} else {
// some other process has locked the file for some reason
}
从Oracle 文档中,执行以下检查:
boolean canWrite() - 如果文件可由当前应用程序写入,则返回 true;否则为假。
boolean canRead() - 如果当前应用程序可以读取文件,则返回 true;否则为假。
如果您询问是否可以在另一个应用程序正在使用该文件时写入该文件,您可能可以强制它,但这取决于另一个应用程序的行为。