使用FileOutputStream 寫入檔案後嘗試刪除檔案時,某些使用者遇到意外問題: file.delete() 傳回false。儘管檔案存在且所有權限檢查(.exists()、.canRead()、.canWrite()、.canExecute())傳回 true,但仍會發生這種情況。
經過進一步調查,似乎存在一個微妙的錯誤Java 中存在這種情況,即使滿足所有必要條件,也可能會阻止成功刪除檔案。要解決此問題,在刪除檔案之前呼叫 System.gc() 至關重要。
以下程式碼片段將此解決方案合併到原始 writeContent 方法中:
<code class="java">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 } } }</code>
以上是儘管檔案存在且有權限,為什麼 File.delete() 會回傳 False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!