2013-03-11 264 views
14

當我試圖從java代碼中刪除一個存在於tomcat服務器conf/Catalina/localhost中的文件時,file.delete()總是返回false 。但如果我通過file.exists()函數檢查文件,它將返回true。我沒有得到任何例外。請幫助我們爲什麼發生這種情況。這是什麼解決方案?java file.delete()返回false但file.exists()返回true

+6

如果file.delete()返回false,則表示它未被刪除。所以file.exists()將返回true。沒有任何錯誤 – rajesh 2013-03-11 10:45:08

+3

檢查文件權限。 – m0skit0 2013-03-11 10:45:11

+0

文件存在,但無法刪除。就這樣。 – Ingo 2013-03-11 10:45:33

回答

14

當我試圖刪除文件這是目前在Tomcat服務器 的conf /卡塔利娜/本地主機從Java代碼然後file.delete()總是 返回false。但是,如果我通過file.exists()函數檢查文件 它將返回true。

很有可能您沒有權限刪除服務器上的文件。檢查您的權限。

f.delete()返回false表示它沒有/不能被刪除,並且f.exists()返回true,所以文件存在但不能被刪除。

+1

我有服務器的完整權限。如果我試圖刪除相同的文件有時文件被刪除,但最大時間不能刪除和函數返回false。 – vishal 2013-03-11 10:48:26

+0

@visit你沒有,當它不工作。 – Sajmon 2013-03-11 10:49:46

+0

有沒有其他方法或庫可以幫助解決這個問題。因爲我有要求通過使用代碼來刪除文件。 – vishal 2013-03-11 10:53:31

0

這意味着該文件存在,但你的java程序不必須刪除that.That是許可,爲什麼要刪除函數返回假

Returns: true if and only if the file or directory is successfully deleted; false otherwise

+2

那麼請告訴我如何爲java進程分配權限來刪除文件。因爲我不得不通過代碼刪除文件。 – vishal 2013-03-11 10:49:53

9

有任何數量的原因有一個文件無法被刪除;它可能不存在,它可能是非空目錄,您可能沒有關閉所有使用它的資源,並且您的程序可能沒有權限這麼做,僅舉幾例。

不幸的是,File.delete()方法提供的原因很少;這很大程度上取決於你去找出並解決問題。但是有好消息。你首先不想使用File

Java 7引入了新的java.nio.file包,這是一個更強大的文件訪問API。它提供了摘要Path的概念,並將具體操作分爲Files類,特別是它提供了Files.delete(),它被記錄爲引發清楚的例外,描述刪除可能失敗的原因。

使用PathFiles;你會很高興你做到了。

2

在刪除它之前,您必須關閉該流。

e.g -

fileInputStream.close(); 
file.delete(); 
2

如果目錄非空,然後File.delete()方法將返回false而不發出一個錯誤。

刪除它之前,您必須先清理目錄。

相關問題