检查文件是否已打开我需要写一个自定义批文件重命名器。我已经完成了大部分工作,但我不知道如何检查文件是否已经打开。我只是用java.io.File包,还有一个canWrite()方法,但这似乎并不测试该文件是否正在被另一个程序使用。有什么办法让我做到这一点吗?
3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
您可以尝试使用FileLock,但操作系统和/或文件系统不一定支持它。 在Windows上,如果另一个应用程序以特定方式打开文件,则可能无法使用FileLock。 即使你真的设法用 FileLock或者其他问题,您仍然会遇到这样的问题,即在测试文件和重命名之间可能会有一些东西出现并打开文件。
如果您使用 FilesAPI而不是 FileAPI在发生故障时将获得更多信息。 在允许重命名已锁定或打开的文件的系统(例如Linux)上,您不会获得任何失败结果或异常。手术会成功的。但是,在这样的系统上,您通常不需要担心文件是否已经打开,因为操作系统不会锁定打开的文件。
呼如林
TA贡献1798条经验 获得超3个赞
// TO CHECK WHETHER A FILE IS OPENED
// OR NOT (not for .txt files)
// the file we want to check
String fileName = "C:\\Text.xlsx";
File file = new File(fileName);
// try to rename the file with the same name
File sameFileName = new File(fileName);
if(file.renameTo(sameFileName)){
// if the file is renamed
System.out.println("file is closed");
}else{
// if the file didnt accept the renaming operation
System.out.println("file is opened");
}添加回答
举报
0/150
提交
取消
