アクセシビリティチェックにもかかわらず、file.delete() が false を返すのはなぜですか?

Linda Hamilton
リリース: 2024-11-05 03:56:02
オリジナル
594 人が閲覧しました

Why does file.delete() return false despite accessibility checks?

誤ったファイル削除: file.delete() アクセシビリティ チェックにもかかわらず False を返す

file.exists() でファイルの存在とアクセシビリティを確認したにもかかわらず、file.canRead()、file.canWrite()、および file.canExecute() は、file.delete() を使用してファイルを削除しようとすると、永続的に false を返します。これにより、削除プロセスでの潜在的なエラーに関する懸念が生じます。

問題の調査

コンテンツをファイルに書き込むには、FileOutputStream が使用され、その後ストリームがフラッシュされて閉じられます。 。検査の結果、4 つのアクセシビリティ チェックすべてで肯定的な結果が得られました。ただし、file.delete() は false を返し続けます。

考えられるエラー

指定されたコード スニペットには、削除を試行する前にファイル ストリームを閉じるという重要な手順が欠けています。この省略により、ファイル システムがメタデータを更新できなくなり、file.delete() が失敗する可能性があります。

解決策

この問題を解決するには、ファイル ストリームがfile.delete() を呼び出す前に適切に閉じてください。以下のコードは必要な変更を実装しています:

<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 file stream before deletion
        } catch (IOException e) {
            // Exception handling for closing the stream
        }
    }
}</code>
ログイン後にコピー
finally ブロックでファイル ストリームを明示的に閉じることにより、ファイルのメタデータが正しく更新され、file.delete() を介してファイルを正常に削除できるようになります。

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

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