ホームページ >Java >&#&チュートリアル >ファイルの存在とアクセス許可にもかかわらず、File.delete() が False を返すのはなぜですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 02:03:02951ブラウズ

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 メソッドに組み込んでいます。

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。