Fausse suppression de fichier : file.delete() renvoie False malgré les vérifications d'accessibilité
Malgré la confirmation de l'existence et de l'accessibilité du fichier avec file.exists() , file.canRead(), file.canWrite() et file.canExecute(), tente de supprimer un fichier à l'aide de file.delete() et renvoie de manière persistante FAUX. Cela soulève des inquiétudes quant aux erreurs potentielles dans le processus de suppression.
Enquête sur le problème
Pour écrire du contenu dans le fichier, FileOutputStream est utilisé, suivi du vidage et de la fermeture du flux. . Après examen, les quatre contrôles d’accessibilité donnent des résultats positifs. Cependant, file.delete() continue de renvoyer false.
Erreur possible
Il manque une étape cruciale à l'extrait de code donné : fermer le flux de fichiers avant de tenter la suppression. Cette omission peut empêcher le système de fichiers de mettre à jour ses métadonnées, provoquant l'échec de file.delete().
Solution
Pour résoudre le problème, assurez-vous que le flux de fichiers est correctement fermé avant d'appeler file.delete(). Le code ci-dessous implémente les modifications nécessaires :
<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>
En fermant explicitement le flux de fichiers dans un bloc final, les métadonnées du fichier sont mises à jour correctement, permettant une suppression réussie du fichier via file.delete().
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!