Lors de la tentative de suppression d'un fichier après y avoir écrit à l'aide de FileOutputStream, certains utilisateurs rencontrent un problème inattendu où file.delete() renvoie false. Cela se produit malgré le fait que le fichier existe et que toutes les vérifications d'autorisation (.exists(), .canRead(), .canWrite(), .canExecute()) renvoient true.
Après une enquête plus approfondie, il semble qu'il s'agisse d'un bug subtil existe en Java, ce qui peut empêcher la suppression réussie d'un fichier même lorsque toutes les conditions nécessaires sont remplies. Pour résoudre ce problème, il est crucial d'appeler System.gc() avant de supprimer le fichier.
L'extrait de code suivant intègre cette solution dans la méthode writeContent d'origine :
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
}
}
}
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3