我知道這個問題是this問題的一個憤怒的副本。 但是,我現在讀了兩遍整個頁面,有些部分是3次,對於我的生活,我沒有看到它的答案!Java 6文件刪除
因此,對我的問題。
我在工作,並且使用Java 6 SE而無法升級到7.我正在編寫一個程序,該程序創建一個文件,寫入該文件,執行一些處理,然後需要刪除該文件不存在。我遇到的問題與提問上述問題的人完全相同:Java不會刪除該文件,我無法弄清楚原因。
代碼:
File f = null;
FileWriter fw = null;
try
{
f = new File("myFile.txt");
fw = new FileWriter(f);
fw.write("This is a sentence that should appear in the file.");
fw.flush();
if(f.delete())
System.out.println("File was successfully deleted.");
else
System.err.println("File was not deleted.");
}
catch(Exception exc)
{
System.err.println(exc.getMessage());
}
catch(Error er {
System.err.println(er.getMessage());
}
catch(Throwable t)
{
System.err.println(t.getMessage());
}
finally
{
fw.close();
}
它不拋出任何可拋出,錯誤或異常(我包括那些以排除任何和所有的邊緣情況下)。第二個打印語句("File was not deleted."
)正在打印到控制檯。我在Windows 7上運行這個,並且正在寫入一個我擁有完全權限(rwx)的文件夾。
用戶詢問我引用的問題回答了他自己的問題,但是以一種不那麼直接的方式來回答他(自己的意見)。無論如何,我很難理解它。他/她似乎暗指這樣的事實,即使用BufferedReader
而不是FileInputStream
爲他/她造成了差異,但我不明白這是如何適用的。
Java 7似乎已經解決了這個問題,引入了java.nio.file.Files
類,但是我再次因爲我的控制範圍之外的原因而無法使用Java 7。
該引用問題的其他回答者暗示這是Java中的一個「bug」,並給出各種規避,例如明確地調用System.gc()
等。我嘗試了所有這些方法,但它們都不起作用。
也許有人可以添加一個新的視角,併爲我慢跑一些想法。
我不認爲這是重複的。正如你已經嘗試了其他問題的建議解決方案,但他們沒有幫助,原因可能是不同的。 – finnw
先關閉它。而且......「使用Java 6卡住了嗎?」我不知道一個在JDK7上運行的公司。我知道1.4和1.5中的很多。考慮你自己的幸運。 –
請注意你所說的是相反的:使用FileInputStream而不是BufferedReader是在其他文章中爲用戶工作的東西。至於它爲什麼適用,那裏有一些評論表明它在Java中存在一個錯誤。 –