ホームページ >Java >&#&チュートリアル >ファイルの存在とアクセス許可にもかかわらず、File.delete() が False を返すのはなぜですか?
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 中国語 Web サイトの他の関連記事を参照してください。