亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查文件是否已打開

檢查文件是否已打開

慕慕森 2019-07-11 10:24:23
檢查文件是否已打開我需要寫一個自定義批文件重命名器。我已經完成了大部分工作,但我不知道如何檢查文件是否已經打開。我只是用java.io.File包,還有一個canWrite()方法,但這似乎并不測試該文件是否正在被另一個程序使用。有什么辦法讓我做到這一點嗎?
查看完整描述

3 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

整個問題充滿了可移植性問題和種族條件:

  • 您可以嘗試使用FileLock,但操作系統和/或文件系統不一定支持它。
  • 在Windows上,如果另一個應用程序以特定方式打開文件,則可能無法使用FileLock。
  • 即使你真的設法用

    FileLock

    或者其他問題,您仍然會遇到這樣的問題,即在測試文件和重命名之間可能會有一些東西出現并打開文件。

一個簡單但不可移植的解決方案是嘗試重命名(或您想要做的任何事情),并診斷返回值和/或任何因打開文件而產生的Java異常。

注:

  1. 如果您使用FilesAPI而不是FileAPI在發生故障時將獲得更多信息。

  2. 在允許重命名已鎖定或打開的文件的系統(例如Linux)上,您不會獲得任何失敗結果或異常。手術會成功的。但是,在這樣的系統上,您通常不需要擔心文件是否已經打開,因為操作系統不會鎖定打開的文件。


查看完整回答
反對 回復 2019-07-11
?
呼如林

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");
    }


查看完整回答
反對 回復 2019-07-11
  • 3 回答
  • 0 關注
  • 354 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號