IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Supprimer un dossier contenant des fichiers


Sujet :

Java

  1. #1
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut Supprimer un dossier contenant des fichiers
    Bonjour à tous,
    je souhaite supprimer un dossier temporaire créé lors de l'exécution de mon application pour contenir des images provenant d'une base de données quelconque lorsque l'utilisateur quitte l'application. Mon problème, quand ce dossier contient des images comme prévu, la suppression n’aboutit pas alors que quand le dossier est vide, la suppression aboutit. Je ne sais pas pourquoi
    J'ai utilisé premièrement ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File suppr = new File("Dossiers Images");
    suppr.delete();
    Deuxièmement je suis passé par une autre idée qui consiste à supprimer d'abord les fichiers contenus dans ce dossier en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    File suppr = new File("Dossiers Images");
                    if (suppr.exists()) {
     
                        if (suppr.isDirectory()) {
                            //Supprimer d'abord les fichiers contenus dans le dossier
                            File[] fichier = suppr.listFiles();
                            for (File file : fichier) {
                                file.delete();
                            }
                            //Ensuite supprimer ce dossier
                            suppr.delete();
                        }
     
                    }
    Problème, le code ne supprime qu'un seul fichier dans le dossier et le dossier reste intacte
    S'il vous plait aidez moi...

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Comment sont-créer ces fichiers ?
    Tous les flux sont-ils correctement fermés ?

    Sous Windows, le fait de laisser un flux ouvert empêche la suppression du fichier... (en plus d'utiliser des ressources inutilement)


    a++

  3. #3
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Tous les flux sont-ils correctement fermés ?

    Sous Windows, le fait de laisser un flux ouvert empêche la suppression du fichier... (en plus d'utiliser des ressources inutilement)

    a++
    Merci beaucoup, je n'avais pas fermé mes flux. Maintenant ça va, je parviens à supprimer tous les fichiers dans le dossier mais le dossier persiste. Quoi faire encore? Merci d'avance

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Peut-être contient-il un ou plusieurs répertoires ?
    Car tu supprimes les fichiers mais pas les sous-répertoires.

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Merci beaucoup, je n'avais pas fermé mes flux.
    J'espère que du coup tu as fait cela proprement (avec un try/finally par ressources ou via le try-with-ressource de Java 7)...

    Citation Envoyé par MasterMbg Voir le message
    Maintenant ça va, je parviens à supprimer tous les fichiers dans le dossier mais le dossier persiste. Quoi faire encore? Merci d'avance
    Est-ce que tu lances d'autres programmes dans ce répertoire ?
    Est-ce que tu n'a pas une vue sur ce répertoire (un explorateur de fichier par exemple) ?

    Windows est très tatillon et peut empêcher la suppression de répertoire dans ces cas là...


    a++

  6. #6
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par dinobogan
    Peut-être contient-il un ou plusieurs
    répertoires ?
    Car tu supprimes les fichiers mais pas les
    sous-répertoires.
    Non non, il ne contient aucun sous répertoire. Les fichiers y sont mis au cours de l'exécution du programme ( au fait, des images provenant d'une base de données).

    Citation Envoyé par adiGuba Voir le message
    J'espère que du coup tu as fait cela proprement (avec un try/finally par ressources ou via le try-with-ressource de Java 7)...
    Oui, je le fais proprement avec try/finally.

    Est-ce que tu lances d'autres programmes dans ce répertoire ?
    Est-ce que tu n'a pas une vue sur ce répertoire (un explorateur de fichier par exemple) ?

    Windows est très tatillon et peut empêcher la suppression de répertoire dans ces cas là...


    a++
    Non non. Au fait, le dossier n'est utilisé que par mon programme. Créé au lancement et supprimer à la fermeture.
    Je trouve qu'il peut rester sans problème à la place de supprimer et recréer au prochain lancement du programme.
    Merci pour le temps que vous avez mis pour m'aider.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    j'ai un problème similaire depuis que je suis passé sous Windows 8 et ssd ; je ne parviens pas à supprimer un dossier vide. Mon environnement est différent puisque les fichiers du dossier sont manipulés par une application externe. Mais les causes du problèmes peuvent être les mêmes, et, quoi qu'il en soit, la solution identique.

    Je me suis aperçu que juste après suppression des fichiers se trouvant dans le dossier, l’indexeur de Windows se déclenchait et me bloquait le dossier. Une simple boucle pourrie du genre while(!directory.delete()) arrivait à me supprimer le dossier au bout d'un moment.

    J'ai donc désactivé l'indexation sur mon dossier de travail, qui n'a aucun intérêt puisqu'il s'agit d'un dossier de travail. Je cherche toujours un moyen de le faire en automatique, mais je reste bloqué par le problème classique de droit d'accès à la registry.

    J'ai un autre problème dû à l'application externe (depuis Windows 7) : pour le résoudre, je renomme le dossier avec un UID (par exemple, mon dossier myfolder devient myfolder_DELETED_<UID>) et je l'efface, et si .delete() retourne false, je fais un .deleteOnExit()). Ceci me permet au besoin de recréer mon dossier de travail autant de fois que nécessaire, et il s'efface finalement lorsque les deux applications (la mienne et l'application externe) se ferment. Pendant le temps que le dossier renommé est toujours visible dans l'explorateur Windows, il est inaccessible, comme s'il était effacé logiquement.

    PS Mon application est écrite en Java 5 : le problème vient peut être de là, et ça marche peut être mieux en Java 7. En production, beaucoup de nos clients étant en Java 6 ou 7, l'application s'exécute en compatibilité Java 5, et le problème existe également.

  8. #8
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 144
    Points : 298
    Points
    298
    Par défaut NIO2
    Hello,

    Le top à l'heure actuelle est le package java.nio.file de java7 (voir doc)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
        Files.delete(path);
    } catch (NoSuchFileException x) {
        System.err.format("%s: no such" + " file or directory%n", path);
    } catch (DirectoryNotEmptyException x) {
        System.err.format("%s not empty%n", path);
    } catch (IOException x) {
        // File permission problems are caught here.
        System.err.println(x);
    }

Discussions similaires

  1. trouver les fichiers et dossiers contenant des caractères spéciaux
    Par katwes dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/11/2010, 18h43
  2. Réponses: 3
    Dernier message: 23/10/2010, 21h57
  3. copier un dossier contenant des fichiers ouverts par d'autres application
    Par guefrachi dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/07/2010, 19h55
  4. Réponses: 4
    Dernier message: 29/08/2006, 18h02
  5. Comment protéger un dossier contenant des images ?
    Par guy777 dans le forum Sécurité
    Réponses: 12
    Dernier message: 17/06/2006, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo