使用FileOutputStream 寫入檔案後嘗試刪除檔案時,某些使用者遇到意外問題: file.delete() 傳回false。儘管檔案存在且所有權限檢查(.exists()、.canRead()、.canWrite()、.canExecute())傳回 true,但仍會發生這種情況。
經過進一步調查,似乎存在一個微妙的錯誤Java 中存在這種情況,即使滿足所有必要條件,也可能會阻止成功刪除文件。要解決此問題,在刪除檔案之前呼叫 System.gc() 至關重要。
以下程式碼片段將此解決方案合併到原始 writeContent 方法:
private void writeContent(File file, String fileContent) {
FileOutputStream to;
try {
to = new FileOutputStream(file);
to.write(fileContent.getBytes());
to.flush();
to.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
to.close(); // Close the stream as before
System.gc(); // Call System.gc() to force garbage collection
} catch (IOException e) {
// TODO Handle IOException
}
}
}
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3