簡體   English   中英

Java文件刪除錯誤

[英]Java file delete error

我想在java中刪除一個文件。它生成這個結果。 我該如何刪除該文件。 這是什么原因。

File l_file = new File(path);
System.out.println(l_file.exists()); //returns true
System.out.println(l_file.delete()); //returns false

謝謝。

文件刪除失敗的原因有很多。 例如,如果另一個進程持有句柄,或者您沒有權限刪除此文件。 在這兩種情況下,您都可以檢查文件是否存在,但不能刪除它。

無法刪除文件的原因有很多。 最可能的是文件在另一個進程中打開,或者您的進程啟動的權限少於刪除該文件所需的權限。

第一個原因是path可以是目錄

來自javadoc File#delete() #delete File#delete()

If this pathname denotes a directory, then the directory must be empty in order to be deleted.

檢查路徑是否為空目錄:

if (l_file.isDirectory()) {
   String[] files = l_file.list();
      if (files.length > 0) {
         System.out.println("The " + l_file.getPath() + " is not empty!");
      }
}

您無法刪除path另一個原因是您沒有權限

檢查你的permitions:

if (l_file.canWrite())
   l_file.delete();

也許您可以嘗試使用File方法檢查它是否是文件(而不是目錄)的權限:

boolean isFile() // if it is a directory it must be empty
boolean canWrite()
boolean canRead()
boolean canExecute()

此外,正如您可以在Java API中閱讀的那樣:“在某些操作系統上,當文件被打開並被這個Java虛擬機或其他程序使用時,可能無法刪除該文件。”

如果您使用的是Linux,則可以嘗試lsof <file_name>以了解哪個進程已打開此文件。

您還可以嘗試使用FileChannel.lock()FileChannel.tryLock()來查看是否可以在刪除鎖之前獲取鎖。

有兩種方法可以解決它。

  1. 轉到文件並將其屬性更改為完全控制
  2. 如果您打開了PrintWriter或Scanner類,則應該關閉該類,尤其是使用.Close關閉Scanner對象 在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM