检查文件是否已打开我需要写一个自定义批文件重命名器。我已经完成了大部分工作,但我不知道如何检查文件是否已经打开。我只是用java.io.File包,还有一个canWrite()方法,但这似乎并不测试该文件是否正在被另一个程序使用。有什么办法让我做到这一点吗?
3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
您可以尝试使用FileLock,但操作系统和/或文件系统不一定支持它。 在Windows上,如果另一个应用程序以特定方式打开文件,则可能无法使用FileLock。 即使你真的设法用 FileLock
或者其他问题,您仍然会遇到这样的问题,即在测试文件和重命名之间可能会有一些东西出现并打开文件。
如果您使用 Files
API而不是 File
API在发生故障时将获得更多信息。 在允许重命名已锁定或打开的文件的系统(例如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
提交
取消