「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ファイルの存在とアクセス許可にもかかわらず、File.delete() が False を返すのはなぜですか?

ファイルの存在とアクセス許可にもかかわらず、File.delete() が False を返すのはなぜですか?

2024 年 11 月 17 日に公開
ブラウズ:449

Why Does File.delete() Return False Despite File Existence and Permissions?

File.delete() が存在し権限をチェックしているにもかかわらず False を返す

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