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'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 :
<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 stream as before System.gc(); // Call System.gc() to force garbage collection } catch (IOException e) { // TODO Handle IOException } } }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!