ファイルのアクセシビリティチェックにもかかわらず「file.delete()」が失敗するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-04 07:59:02
オリジナル
410 人が閲覧しました

Why Does `file.delete()` Fail Despite File Accessibility Checks?

ファイルのアクセス可能性チェックにもかかわらず削除失敗を解決する

FileOutputStream を使用してコンテンツを書き込んだ後にファイルを削除しようとすると、検証したにもかかわらず file.delete() メソッドが false を返します。ファイルの存在と、file.exists()、file.canRead()、file.canWrite()、および file.canExecute() によるアクセス可能性。この動作は、Java 特有のバグに起因する可能性があります。

writeContent() メソッドは、コンテンツをファイルに書き込み、ストリームを閉じるために正しく利用されています。ただし、ファイルの削除を試みると、Java 仮想マシン (JVM) によるファイルへの参照が持続するため、削除に失敗します。この問題に対処するには、削除を試みる前に System.gc() を呼び出す必要があります。これにより、JVM は強制的にガベージ コレクションを実行し、ファイルへの参照が解放され、ファイルの削除が可能になります。

System.gc() が追加された修正コードには次のものが含まれます。

finally
{
    try
    {
        in.close();
        in = null;
        out.flush();
        out.close();
        out = null;
        System.gc();
    }
    catch (IOException e)
    {
        logger.error(e.getMessage());
        e.printStackTrace();
    }
}
ログイン後にコピー

System を呼び出すことによりfinally ブロックの .gc() により、ファイルへの参照が削除され、file.delete() がファイルを正常に削除できるようになります。

以上がファイルのアクセシビリティチェックにもかかわらず「file.delete()」が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート