检查文件是否已打开

检查文件是否已打开

我需要写一个自定义批文件重命名器。我已经完成了大部分工作,但我不知道如何检查文件是否已经打开。我只是用java.io.File包,还有一个canWrite()方法,但这似乎并不测试该文件是否正在被另一个程序使用。有什么办法让我做到这一点吗?



慕慕森
浏览 332回答 3
3回答

郎朗坤

整个问题充满了可移植性问题和种族条件:您可以尝试使用FileLock,但操作系统和/或文件系统不一定支持它。在Windows上,如果另一个应用程序以特定方式打开文件,则可能无法使用FileLock。即使你真的设法用FileLock或者其他问题,您仍然会遇到这样的问题,即在测试文件和重命名之间可能会有一些东西出现并打开文件。一个简单但不可移植的解决方案是尝试重命名(或您想要做的任何事情),并诊断返回值和/或任何因打开文件而产生的Java异常。注:如果您使用FilesAPI而不是FileAPI在发生故障时将获得更多信息。在允许重命名已锁定或打开的文件的系统(例如Linux)上,您不会获得任何失败结果或异常。手术会成功的。但是,在这样的系统上,您通常不需要担心文件是否已经打开,因为操作系统不会锁定打开的文件。

呼如林

 //  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");     }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java