Supprimer un dossier avec ses fichiers

ammouna24 Messages postés 35 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 6 juillet 2009 - 1 juil. 2009 à 10:53
ammouna24 Messages postés 35 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 6 juillet 2009 - 2 juil. 2009 à 14:45
Bonjour,

Je veux bien supprimer un répertoire avec tous ces fichiers qui le contienne.

J'ai essayé dir.delete();
mais ça marche pas.

MErci pour votre aide

9 réponses

deglingo592003 Messages postés 77 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 janvier 2014
1 juil. 2009 à 11:15
[url]http://java.sun.com/javase/6/docs/api/java/io/File.html/url

Deletes the file or directory denoted by this abstract pathname. If
this pathname denotes a directory, then the directory must be empty in
order to be deleted.

juste un petit coup de javadoc aurait été beaucoup plus rapide ...

il faut donc parcourir ton dossier ( et éventuellement ses sous dossier ) pour supprimer chaque fichier avant de pouvoir supprimer le dossier en lui même.
0
ammouna24 Messages postés 35 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 6 juillet 2009
1 juil. 2009 à 11:22
Oui exactement donc j'ai essayé ça

static public void deleteDirectory(File path) {
    if( path.exists() ) {
      File[] files = path.listFiles();
      for(int i=0; i<files.length; i++) {
         if(files[i].isDirectory()) {
           deleteDirectory(files[i]);
         }
         else {
           files[i].delete();
         }
      }
    }
    path.delete();
  }
}

mais ça marche pas très bien parceque moi je veux créer un dossier temporaire pour mettre des fichiers index avec lucence et puis supprimer le répertoire en fin de traitement.

Le problème qui me viens est :
quand je suppose que le dossier est supprimer et dans une nouvelle itération d'indexation avec lucence (je veux créer ce même dossier temp)  j'ai cette erreur [Le fichier spécifié est introuvable)].

Merci

[Insert_Emoticon%28%27/imgs2/smile_angry.gif%27%29; <!--]
0
deglingo592003 Messages postés 77 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 janvier 2014
1 juil. 2009 à 14:13
je n'ai pas testé ce code mais il m'a l'air correct

Je ne connait pas "lucence" par contre tu souhaite recréer exactement le même dossier ... dans ce cas pourquoi ne pas simplement supprimé le contenu du dossier au lieu de supprimer le dossier en lui même pour le recréer par la suite ?

sinon si tu souhaite quand même supprimer pour re créer, essaye de faire un test si le repertoire existe avant d'essayé de le crée à nouveau, on ne sait jamais que l'erreur serai ailleur (un problème de rafraichissement des données ?)
0
deglingo592003 Messages postés 77 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 janvier 2014
1 juil. 2009 à 14:24
Je ne trouve pas de quoi éditer mon message

pour moi sous eclipse avec java 1.6, la suppression du dossier et ce qu'il contient fonctionne correctement, et pas d'erreur de ce coter tout est bien supprimé et je peut re créer derrière sans aucun soucis.

par contre une chose
 quand tu re appelle ta fonction pour la récursivité

File[] files = path.listFiles();

ton tableau contient le nom des fichiers et pas le path  jusqu'au fichier

par exemple :

premier appelle tu veux supprimer tout le contenu de c:\dossier1\dossier2

dans ce dossier2 tu a sous dossier 1
qui te donnerai par exemple

C:
----|dossier1
--------|dossier2
------------| fichier 1
------------| fichier 2
------------| Sous dossier 1 

donc ton premier appel se fait avec    deleteDirectory(C:\dossier1\dossier2)

tu trouve dedans "sous dossier 1" qui est contenu dans ton tableau

donc tu fait appelle a deleteDirectory(sous dossier1)

or il faut le path complé deleteDirectory(c:\dossier1\dossier2\sous dossier1)

bref essaye en remplacant deleteDirectory(files[i]) par deleteDirectory(path+files[i]) sans oublié de rajouter "" ou "/" en fonction de ton OS pour la separation des fichiers

tien moi au courant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ammouna24 Messages postés 35 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 6 juillet 2009
1 juil. 2009 à 14:33
Le problème avec deleteDirectory(path+files[i]) elle accepte des file mais l'pérateur + ne marche pas avec les files.
 [Insert_Emoticon%28%27/imgs2/smile_angry.gif%27%29; <!--]
0
deglingo592003 Messages postés 77 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 janvier 2014
1 juil. 2009 à 14:40
par exemple sous Windows

deleteDirectory(new File(path+"\"+file[i]));
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
1 juil. 2009 à 15:48
Salut,

il vaut mieux utiliser les constantes pour les séparateurs :
java.io.File.separator ou java.io.File.separatorChar
0
deglingo592003 Messages postés 77 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 31 janvier 2014
1 juil. 2009 à 15:56
oui oui utiliser les constante mais bon la c'était juste pour des test !

ou simplement : String separator = System.getProperty("file.separator");
0
ammouna24 Messages postés 35 Date d'inscription lundi 9 juillet 2007 Statut Membre Dernière intervention 6 juillet 2009
2 juil. 2009 à 14:45
Merci pour vos réponses, ça marche mais j'ai encore des problèmes de suppression des fichiers qui ont comme extension (.f1, .f2, .fdx, .frq; .tis, .prx).Merci
0
Rejoignez-nous