我的代碼利用BufferedReader
從文件[main.txt]和PrintWriter
讀取以寫入另一個temp [main.temp]文件。我關閉了這兩個流,但我無法在與[main.txt]關聯的File
對象上調用delete()
方法。只有在關閉兩個流之後調用System.gc()
之後,才能刪除File
對象。使用delete()刪除文件 - Java
public static boolean delete (String str1, String str2, File FileLoc)
{
File tempFile = null;
BufferedReader Reader = null;
PrintWriter Writer = null;
try
{
tempFile = new File (FileLoc.getAbsolutePath() + ".tmp");
Reader = new BufferedReader(new FileReader(FileLoc));
Writer = new PrintWriter(new FileWriter(tempFile));
String lsCurrLine = null;
while((lsCurrLine = Reader.readLine()) != null)
{
// ...
// ...
if (true)
{
Writer.println(lsCurrLine);
Writer.flush();
}
}
Reader.close();
Writer.close();
System.gc();
}
catch(FileNotFoundException loFileExp)
{
System.out.println("\n File not found . Exiting");
return false;
}
catch(IOException loFileExp)
{
System.out.println("\n IO Exception while deleting the record. Exiting");
return false;
}
}
這樣可靠嗎?還是有更好的解決辦法?
小心向我們展示您的代碼? – 2010-09-28 03:22:12
@Richard:你能提出建議嗎? – 2010-09-28 03:37:13
你不是在任何地方調用'File.delete()'。只是命名一些任意的方法'刪除'並不意味着它實際上會刪除文件。並談論副作用。如果我在API中找到一個名爲'delete'的方法,我會期望它刪除一些東西,而不是複製數據並創建隨機臨時文件。 – 2010-09-28 04:20:56