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