LISTAGE DES FICHIERS CONTENUE DANS UN DOSSIER ET SOUS-DOSSIERS

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 1 oct. 2008 à 17:34
codesambinfo Messages postés 8 Date d'inscription jeudi 22 octobre 2009 Statut Membre Dernière intervention 11 novembre 2009 - 11 nov. 2009 à 01:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48104-listage-des-fichiers-contenue-dans-un-dossier-et-sous-dossiers

codesambinfo Messages postés 8 Date d'inscription jeudi 22 octobre 2009 Statut Membre Dernière intervention 11 novembre 2009
11 nov. 2009 à 01:53
Merci c'est bien pour un debut!!!
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
8 févr. 2009 à 15:30
bizarre, j'ai pas pousser les tests mais bon tant que ca marche^^
bilbokay Messages postés 7 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 février 2009
8 févr. 2009 à 14:19
Désolé de t'embeter mais
Ca marche : il n'y a plus d'erreurs et tous les dossiers et les fichiers ont été trouvés.
mais il se trouve que des fois ça affiche un dossier "deux fois"

Par exemple voici ce que ça donne chez moi:

Repertoire D:\Test chargé.
Repertoire D:\Test\1-Testavec chargé.
Repertoire D:\Test\2-testSans chargé.
Repertoire D:\Test\2-testSans\22-TestAvec chargé.
Repertoire D:\Test\2-testSans\23-TestAsans chargé.
Repertoire D:\Test\2-testSans\24-TestAvec chargé.
Repertoire D:\Test\2-testSans\23-TestAsans chargé.
Repertoire D:\Test\3-TestAvec chargé.

ici le dossier "D:\Test\2-testSans\23-TestAsans" revient une seconde fois

Mais bon l'essentiel c'est que ça affiche tout, alors ça me va.
Merci
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
29 janv. 2009 à 10:43
c'est bon j'ai trouve.
je l'ai remplacer dans le code actuel. la modif est à la ligne 36.
bilbokay Messages postés 7 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 février 2009
27 janv. 2009 à 11:19
Ok!
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
27 janv. 2009 à 10:21
je reprend mon code de mon coté, je fais les modif et je te tien au cours mais ca va prendre un peu de temps car je suis actuelement sur d'autre codes ^^
bilbokay Messages postés 7 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 février 2009
26 janv. 2009 à 17:43
je vais me débrouiller alors
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
26 janv. 2009 à 16:34
je crois que c'est normal car ca répertorie les fichiers et non les dossiers
bilbokay Messages postés 7 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 février 2009
25 janv. 2009 à 18:09
Ca marche un peu mais pas totalement:
çà ne liste pas tous le répertoires (surtout celui qui suit directement un dossier vide :
voila le message de sortie :

run:
Repertoire D:\Test chargé.
Repertoire D:\Test\Premier Dossier avec contenu chargé.
Repertoire D:\Test\Premier Dossier sans contenu chargé.
Repertoire D:\Test\Troisième Dossier avec contenu chargé.
Repertoire D:\Test\Troisième Dossier avec contenu\Deuxieme sous contenu Dossier avec contenu chargé.
BUILD SUCCESSFUL (total time: 0 seconds)

alors que le répertoire que je liste est comme ceci :

D:\TEST
+---Premier Dossier avec contenu
+---Premier Dossier sans contenu
+---Second Dossier avec contenu
¦ +---Premier sous contenu Dossier avec contenu
+---Troisième Dossier avec contenu
+---Deuxieme sous contenu Dossier avec contenu

Comment faire ?
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
25 janv. 2009 à 16:16
C'est bien ce que je pensais l'erreur est a la ligne 53 de la condition ligne 28
donc la tu fais simplement une condition que si fichier[i] est null alors tu ne fais pas cette action
attention :

etant donnée que c'est un fonction récursive (c a d qui s'appelle elle meme) je pense que la condition doit etre faite a la ligne avant le do {

en clair :
# ...
# fichiers = directoryToScan.listFiles();
# int i = 0;

if (fichier.length > 0){ // si le dossier actuel contient des fichiers alors
# do { ...
...
} while (i < fichiers.length);
}
// fin si

et la ca devrai etre bon
bilbokay Messages postés 7 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 février 2009
25 janv. 2009 à 14:29
C'est vrai : l'exception se situe aussi sur :
" File[] fichiersTempo = listageDansRepertoire.listeDeFichiersDansDossierEtSousDossier(fichiers[i].toString());"

il y a aussi un warning sur : ce même " File[] fichiersTempo = listageDansRepertoire.listeDeFichiersDansDossierEtSousDossier(fichiers[i].toString());"

qui dit :"accessing static methode listeDeFichiersDansDossierEtSousDossier"

Je dois avouer que je suis très nul en java et je n'ai fait qu'un copier-coller de ton code car il m'est d'un grand secours.
Et que j'ai aussi beaucoup du mal à comprendre la récursivité.

le message complet étant : (j'utilise Netbeans)

run:
Repertoire D:\Test chargé.
Repertoire D:\Test\Dossier avec contenu chargé.
Repertoire D:\Test\Dossier sans contenu chargé.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at listage.listerFichier.listeDeFichiersDansDossierEtSousDossier(listerFichier.java:28)
at listage.listerFichier.listeDeFichiersDansDossierEtSousDossier(listerFichier.java:53)
at listage.Main.main(Main.java:23)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

La ligne 28 :"if (fichiers[i].isDirectory()) {"

La ligne 53 : "File[] fichiersTempo = listageDansRepertoire.listeDeFichiersDansDossierEtSousDossier(fichiers[i].toString());"

et la ligne 23 : "coul.listeDeFichiersDansDossierEtSousDossier("D:\\Test");" (c'est l'instanciation que j'ai faite)

Que faire?!
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
25 janv. 2009 à 12:54
j'ai farfouillé sur le web pour comprendre l'erreur et j'ai trouvé ca :

- java.lang.IndexOutOfBoundsException : Un indice (sur un tableau, une chaîne) ou un intervalle défini par deux indices ont dépassé les limites inférieures ou supérieures. Les classes suivantes dérivent de cette classe d'exception :
- java.lang.ArrayIndexOutOfBoundsException pour les tableaux (indice négatif ou supérieur ou égal à la taille du tableau).
- java.lang.StringIndexOutOfBoundsException pour les chaînes de caractères.

dans notre cas c'est le tableau qui dépasse les limites supérieures, je suppose.
mais je ne vois pas pourquoi a cette ligne..
Peux tu me donner le message d'erreur complet si ce n'est pas le cas merci
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
25 janv. 2009 à 12:41
tu est sure que c'est sur cette ligne??
car si je traduit la ligne il vérifie si c'est ou non un dossier (qu'il soit vide ou pas)

je pense que l'erreur devrait se faire ici :
"listerFichier listageDansRepertoire = new listerFichier();
File[] fichiersTempo = listageDansRepertoire.listeDeFichiersDansDossierEtSousDossier(fichiers[i].toString());"

la je ne sais quoi dire ^^
bilbokay Messages postés 7 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 février 2009
25 janv. 2009 à 00:36
tout marche bien quand il n'y a aucun répertoire ou sous répertoire non vide. mais dès qu'un répertoire ne contient rien ça me donne java.lang.ArrayIndexOutOfBoundsException: 0

sur la ligne = "if (fichiers[i].isDirectory()) { "

et ça s'arrete.
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
24 janv. 2009 à 19:02
a quel niveau ?
bilbokay Messages postés 7 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 février 2009
24 janv. 2009 à 15:12
Ca me donne une erreur pour les dossiers vides.
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
11 déc. 2008 à 10:26
si tu as un probleme tu sais ou chercher maintenant..
cs_sanon Messages postés 1 Date d'inscription vendredi 5 décembre 2008 Statut Membre Dernière intervention 10 décembre 2008
10 déc. 2008 à 19:03
je les adore, je me trouve dans un tres bon staff je vus demande de continuer a m'aider a programme!! je les trouve tres bon surtout pour moi. merci
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
3 oct. 2008 à 16:58
Et bien c'est l'occasion d'en apprendre d'autres :) Si tu as besoin de conseils demande moi ou regarde sur les codes sources en cherchant ArrayList
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
3 oct. 2008 à 15:24
je l'ai fais avec les outils que je connais ^^ voila pourquoi
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
3 oct. 2008 à 15:21
slt,
pourquoi ne pas avoir mis cette fonction avec ton autre source pour chercher un fichier, a vrai dire lister les dossier et sous dossier si tu mettais la possibilité de rechercher en même temps; ça deviendrai intéressant. Et tu pourrais faire un "pannel" de fonctions
sinon pour ton code tu te complique vraiment la vie, ton code n'est vraiment pas optimisé, que ce soit question mémoire (tu alloues des tableau et les réalloue par la suite, utilise des tableau temporaires....)
Pourquoi ne pas retourner un Arraylist de File, ça serait bien plus pratique comme ça met les éléments à la queue leu leu et et les éléments de chaque sous dossier, en utilisant la récursivité.
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 17:58
lol
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 17:48
le match :(?i)blabla.*" => fichier commençant par "blabla"
Desole je bosse a cote et je m'emmele les pinceaux
kryshnar Messages postés 44 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 26 février 2009
1 oct. 2008 à 17:43
j'ai jamais utiliser les pattern...
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
1 oct. 2008 à 17:34
lol dommage que t'ai pas garde l'idee de pattern pour les fichiers, c'est ce qui faisait que ta source etait interressante :P