我想写一个已被其他进程使用的文件。
我的问题是:有没有办法避免FilenotfoundException,并写入文件虽然它正在使用?
谢谢!
答案 0 :(得分:0)
从Oracle docs,执行以下检查:
boolean canWrite() - 如果当前应用程序可以写入文件,则返回true;否则就是假的。
boolean canRead() - 如果当前应用程序可以读取文件,则返回true;否则就是假的。
如果您在询问是否可以在另一个应用程序使用该文件时写入该文件,您可能可以强制它,但这取决于其他应用程序的行为。
答案 1 :(得分:0)
如果其他进程在您的应用程序要使用的文件上获得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
}