"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi File.delete() renvoie-t-il False malgré l'existence des fichiers et les autorisations ?

Pourquoi File.delete() renvoie-t-il False malgré l'existence des fichiers et les autorisations ?

Publié le 2024-11-17
Parcourir:109

Why Does File.delete() Return False Despite File Existence and Permissions?

File.delete() renvoie False malgré l'existence et la vérification des autorisations

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
        }
    }
}
Dernier tutoriel Plus>

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