[英]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()
來查看是否可以在刪除鎖之前獲取鎖。
有兩種方法可以解決它。
.Close
關閉Scanner對象
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.