檢查文件是否已打開我需要寫一個自定義批文件重命名器。我已經完成了大部分工作,但我不知道如何檢查文件是否已經打開。我只是用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
提交
取消