Java 写入已使用的文件
我想写入一个文件,该文件已被其他进程使用 我的问题是:有没有一种方法可以避免FilenotfoundException,并在使用中写入文件 谢谢大家! 从中,执行以下检查: boolean canWrite()-如果文件可由当前应用程序写入,则返回true;否则就错了 boolean canRead()-如果文件可由当前应用程序读取,则返回true;否则就错了Java 写入已使用的文件,java,Java,我想写入一个文件,该文件已被其他进程使用 我的问题是:有没有一种方法可以避免FilenotfoundException,并在使用中写入文件 谢谢大家! 从中,执行以下检查: boolean canWrite()-如果文件可由当前应用程序写入,则返回true;否则就错了 boolean canRead()-如果文件可由当前应用程序读取,则返回true;否则就错了 如果您询问是否可以在另一个应用程序正在使用该文件时写入该文件,您可能可以强制执行,但这取决于另一个应用程序的行为。如果另一个进程在您的应
如果您询问是否可以在另一个应用程序正在使用该文件时写入该文件,您可能可以强制执行,但这取决于另一个应用程序的行为。如果另一个进程在您的应用程序要使用的文件上获得了
锁,您必须确保应用程序等待特定的时间,直到释放锁。锁定机制
完全取决于使用文件
的其他进程。
你可以试试这样的
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
}
是否可以写入另一个进程正在使用的文件实际上不是Java问题,而是与底层操作系统有关。如果文件存在,您不应该遇到FileNotFoundException
。为什么要从两个进程中使用同一个文件?我愿意打赌有更好的办法。是的,我的问题是,如果有办法强迫它,但谢谢你的回答!我从来没有用过这个,但可能是你需要的。这也是一个漂亮的例子。