begin process at 2012 02 12 14:38:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > LISTAGE DES FICHIERS CONTENUE DANS UN DOSSIER ET SOUS-DOSSIERS

LISTAGE DES FICHIERS CONTENUE DANS UN DOSSIER ET SOUS-DOSSIERS


 Information sur la source

Note :
Aucune note
Catégorie :Application Classé sous :lister fichiers, arborescence, arborescense Niveau :Débutant Date de création :01/10/2008 Date de mise à jour :29/01/2009 10:42:03 Vu :6 442

Auteur : kryshnar

Ecrire un message privé
Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note

 Description

Bonjour,

Suite a mon premier programme, je viens d'effectuer le code qui permet de lister tous les fichiers contenue dans le dossier "repertoire" ainsi que dans tous les sous-dossiers.


Source

  • package PageWeb;
  • import java.io.*;
  • public class listerFichier {
  • static File[] listeDeFichiersDansDossierEtSousDossier(String repertoire) {
  • File directoryToScan = new File(repertoire);
  • File[] fichiers = null;
  • System.out.println("Repertoire " + repertoire + " chargé.");
  • //Liste tous les fichiers contenue dans le dossier spécifier :
  • fichiers = directoryToScan.listFiles();
  • int i = 0;
  • while (i < fichiers.length) {
  • if (fichiers[i].isDirectory()) {
  • //Liste de sauvegarde des fichiers listés avant l'élément actuel
  • File[] TempoAvantElement = new File[i];
  • //Liste de sauvegarde des fichiers listés apres l'élément actuel
  • File[] TempoApresElement = new File[fichiers.length - i];
  • //sauvegarde des fichiers listés avant l'element actuel
  • for (int j = 0; j < i; j++) {
  • TempoAvantElement[j] = fichiers[j];
  • }
  • //sauvegarde des fichiers listés apres l'element actuel
  • int k = 0;
  • for (int j = (i + 1); j < fichiers.length; j++) {
  • TempoApresElement[k] = fichiers[j];
  • k++;
  • }
  • //liste les fichiers du dossier trouvé
  • listerFichier listageDansRepertoire = new listerFichier();
  • File[] fichiersTempo = listerFichier.listeDeFichiersDansDossierEtSousDossier(fichiers[i].toString());
  • //si dossier n'est pas vide :
  • if (fichiersTempo.length != 0){
  • //Redimentionnement de l'objet
  • fichiers = new File[TempoAvantElement.length + fichiersTempo.length + TempoApresElement.length - 1];
  • //insertion des elements dans la liste
  • for (int j = 0; j < fichiers.length; j++) {
  • //fichiers listé avant le dossier :
  • if (j < i) {
  • fichiers[j] = TempoAvantElement[j];
  • } //fichier listé dans le dossier :
  • else {
  • if (j < i + fichiersTempo.length) {
  • fichiers[j] = fichiersTempo[j - i];
  • } //fichiers listé apres le dossier :
  • else {
  • fichiers[j] = TempoApresElement[j - i - fichiersTempo.length];
  • }
  • }
  • }
  • }
  • }
  • i++;
  • }
  • return fichiers;
  • }
  • }
package PageWeb;

import java.io.*;

public class listerFichier {

    static File[] listeDeFichiersDansDossierEtSousDossier(String repertoire) {
        File directoryToScan = new File(repertoire);
        File[] fichiers = null;
        System.out.println("Repertoire " + repertoire + " chargé.");
//Liste tous les fichiers contenue dans le dossier spécifier :
        fichiers = directoryToScan.listFiles();
        int i = 0;
        while (i < fichiers.length) {
            if (fichiers[i].isDirectory()) {
                //Liste de sauvegarde des fichiers listés avant l'élément actuel
                File[] TempoAvantElement = new File[i];
                //Liste de sauvegarde des fichiers listés apres l'élément actuel
                File[] TempoApresElement = new File[fichiers.length - i];


                //sauvegarde des fichiers listés avant l'element actuel
                for (int j = 0; j < i; j++) {
                    TempoAvantElement[j] = fichiers[j];
                }
                //sauvegarde des fichiers listés apres l'element actuel
                int k = 0;
                for (int j = (i + 1); j < fichiers.length; j++) {
                    TempoApresElement[k] = fichiers[j];
                    k++;
                }
                //liste les fichiers du dossier trouvé
                listerFichier listageDansRepertoire = new listerFichier();
                File[] fichiersTempo = listerFichier.listeDeFichiersDansDossierEtSousDossier(fichiers[i].toString());

                //si dossier n'est pas vide :
                if (fichiersTempo.length != 0){ 
                    //Redimentionnement de l'objet
                    fichiers = new File[TempoAvantElement.length + fichiersTempo.length + TempoApresElement.length - 1];

                    //insertion des elements dans la liste
                    for (int j = 0; j < fichiers.length; j++) {
                        //fichiers listé avant le dossier :
                        if (j < i) {
                            fichiers[j] = TempoAvantElement[j];
                        } //fichier listé dans le dossier :
                        else {
                            if (j < i + fichiersTempo.length) {
                                fichiers[j] = fichiersTempo[j - i];
                            } //fichiers listé apres le dossier :
                            else {
                                fichiers[j] = TempoApresElement[j - i - fichiersTempo.length];
                            }
                        }
                    }
                }
            }
            i++;
        }
        return fichiers;
    }
}

 Conclusion

Il retourne la liste des fichiers par ordre d'arborescence et ordre alphabétique dans l'arborescence.

Voila

Bonne continuation.


 Historique

29 janvier 2009 10:40:23 :
suite a une remarque d'un programmeur je modifie mon code pour gérer les dossiers vides.. mais il peut toujours y avoir des erreurs^^ Merci a toutes et tous
29 janvier 2009 10:42:03 :
.

 Sources du même auteur

CHERCHER UN FICHIER

 Sources de la même categorie

Source avec Zip Source avec une capture [J2ME] MAILXPRESS, UNE PETITE APPLICATION D'ENVOI DE MAIL ÉC... par doderic
Source avec Zip CLIENT ET SERVEUR DE MESSAGERIES par lemout
Source avec Zip Source avec une capture NAVIGATEUR HTTP par lemout
Source avec Zip Source avec une capture PROGRAMME DE PARTAGE DE FICHIER EN RESEAUX par billatosco
Source avec Zip JET SPRING JSF PRIMEFACES par mendjijet

 Sources en rapport avec celle ci

Source avec Zip CRÉATEUR DE ARBORESCENCE SIMPLE POUR JTREE À PARTIR D'UN XML par loloof64
Source avec Zip COMMENT COPIER TOUTE UNE ARBORESCENCE par larsson
Source avec Zip ARBORESCENCE - DISQUE DUR - JTREE par grand_jeanluc
Source avec Zip [JTREE] ARBORESSANCE D'UN DISQUE DUR SIMPLE ET RAPIDE par Waldo2188
Source avec Zip CLASSES D'ARBRES (BINAIRE , BINAIRE DE RECHERCHE, AVL , BICO... par FireDraGon

Commentaires et avis

Commentaire de sheorogath le 01/10/2008 17:34:40 administrateur CS

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

Commentaire de kryshnar le 01/10/2008 17:43:57

j'ai jamais utiliser les pattern...

Commentaire de sheorogath le 01/10/2008 17:48:20 administrateur CS

le match :(?i)blabla.*" => fichier commençant par "blabla"
Desole je bosse a cote et je m'emmele les pinceaux

Commentaire de kryshnar le 01/10/2008 17:58:50

lol

Commentaire de petifa le 03/10/2008 15:21:39

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é.

Commentaire de kryshnar le 03/10/2008 15:24:54

je l'ai fais avec les outils que je connais ^^ voila pourquoi

Commentaire de petifa le 03/10/2008 16:58:45

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

Commentaire de sanon le 10/12/2008 19:03:22

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

Commentaire de kryshnar le 11/12/2008 10:26:16

si tu as un probleme tu sais ou chercher maintenant..

Commentaire de bilbokay le 24/01/2009 15:12:02

Ca me donne une erreur pour les dossiers vides.

Commentaire de kryshnar le 24/01/2009 19:02:48

a quel niveau ?

Commentaire de bilbokay le 25/01/2009 00:36:30

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.

Commentaire de kryshnar le 25/01/2009 12:41:10

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 ^^


Commentaire de kryshnar le 25/01/2009 12:54:28

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

Commentaire de bilbokay le 25/01/2009 14:29:30

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?!

Commentaire de kryshnar le 25/01/2009 16:16:27

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

Commentaire de bilbokay le 25/01/2009 18:09:31

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 ?

Commentaire de kryshnar le 26/01/2009 16:34:23

je crois que c'est normal car ca répertorie les fichiers et non les dossiers

Commentaire de bilbokay le 26/01/2009 17:43:58

je vais me débrouiller alors

Commentaire de kryshnar le 27/01/2009 10:21:55

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 ^^

Commentaire de bilbokay le 27/01/2009 11:19:25

Ok!

Commentaire de kryshnar le 29/01/2009 10:43:02

c'est bon j'ai trouve.
je l'ai remplacer dans le code actuel. la modif est à la ligne 36.

Commentaire de bilbokay le 08/02/2009 14:19:51

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

Commentaire de kryshnar le 08/02/2009 15:30:59

bizarre, j'ai pas pousser les tests mais bon tant que ca marche^^

Commentaire de codesambinfo le 11/11/2009 01:53:35

Merci c'est bien pour un debut!!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

arborescence [ par nasnico ] Bonjour a tous, je tiens d'abord à remercier le créateur de ce site car il est très utile et très convivialJe cherche un programme qui scrute le pc po Arborescence d'un disque dans une fenêtre [ par foudejava ] Bonjour,je souhaite réaliser l'arborescence de mon disque ( sous forme Windows avec répertoires, sous_répertoires et fichiers ) le tout dans une fenêt Racine pour arborescence d'un poste distant [ par foudejava ] Bonsoir,j'aimerai savoir comment définir le noeud racine pour pouvoir faire une arborescence d'un poste distant. J 'arrive à faire l'arborescence de m java: arborescence des dossiers [ par psychodingue ] Bonjours à tousMoi j'aimerai faire un bouton "parcourir" pour la sélection d'un dossier, est-ce qu'il y a des classes spéciale de java qui le prend en Fusion arborescence JDOM [ par Ekik ] Bonjours,Voila, je dois fusionner x arbres JDOM. Je voulais savoir si il y a une commande qui fais cela?Merci d'avance.Cédric Représentation graphique d'une arborescence [ par lizarajim ] Bonjour, je cherche à afficher en java une structure arborescente :O/ | O O O|O/ | O O O/ \ O O Oje cherche une représentation graphique verticale(noe Représentation graphique d'une arborescence [ par lizarajim ] Bonjour, je cherche à afficher en java une structure arborescente :O/ | O O O|O/ | O O O/ \ O O Oje cherche une représentation graphique verticale(noe Arborescence et checkbox [ par lorenzo972 ] Bonjour,Je suis en stage actuellement et je dois faire une arborescence des fichiers d'un ordi avec des checkboxs devant chaque dossier et sous dossie arborescence [ par fil59 ] Programmeur débutant en java, je souhaite faire apparaitre dans une fenetre l'arborescence du disque dur afin de choisir le répertoire dans lequel je URGENT : problème de sélection dans un JTree [ par terminagroo ] Bonjour,Voil&#224; j'ai cr&#233;&#233; une arborescence de fichiers qui fonctionne plut&#244;t bien (un JTree). Mais mon probl&#232;me est que lorsque


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales