ホームページ >Java >&#&チュートリアル >ファイルが存在し、アクセス許可がある場合でも、「File.delete()」が False を返すのはなぜですか?

ファイルが存在し、アクセス許可がある場合でも、「File.delete()」が False を返すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 03:16:02648ブラウズ

Why Does `File.delete()` Return False Even When the File Exists and Has Permissions?

ファイルの存在と権限にもかかわらず File.delete() が False を返す

Q: file.delete() が実行されるという問題が発生しています。 file.exists()、file.canRead()、file.canWrite()、および file.canExecute() がすべて true を返す場合でも、このメソッドは false を返します。この問題の原因は何でしょうか?

A: ファイルの存在と権限のチェックが完了しているにもかかわらず、Java のバグが原因でこの問題が発生する可能性があります。これを克服するには、次の手順を組み込むことが重要です。

    ストリームを確実に閉じる: コードでは、コンテンツの書き込み後に出力ストリームをフラッシュして閉じています。ただし、該当する場合は、入力ストリームが閉じられていることも確認する必要があります。
  1. System.gc() を呼び出す: 最後の重要な手順は、System.gc() を呼び出すことです。これにより、関連するシステム リソースが解放されます。ファイル。これは、削除プロセスを正常に完了するために必要です。
これらの手順をコードに統合すると、問題が解決されるはずです。

<code class="java">public void deleteFile() {
    FileOutputStream to = null;
    FileInputStream in = null;
    try {
        in = new FileInputStream(file);
        to = new FileOutputStream(file);
        to.write(fileContent.getBytes());
        to.flush();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            in.close();
            in = null;
            to.flush();
            to.close();
            to = null;
            System.gc();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // Attempt to delete file
    if (file.delete()) {
        // Delete successful
    } else {
        // Handle unsuccessful deletion
    }
}</code>
これらの提案に従うことで、この問題を解決でき、ファイル削除プロセスが正常に完了したことを確認してください。

以上がファイルが存在し、アクセス許可がある場合でも、「File.delete()」が False を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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