Listing de répertoire récursif récalcitrant! [Résolu]

Signaler
Messages postés
25
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
10 mai 2010
-
Messages postés
25
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
10 mai 2010
-
Bonjour, je viens vers vous parce que je galère depuis un petit moment sur un code qui va apparaitre tout con pour la plupart d'entre vous mais.. je galère pas mal pour y arriver:
Je veux lister le contenu d'un répertoire donné ainsi que le contenu des sous répertoires le constituant.

Dans le genre:

/Dossier principal
---fichier1.txt
---fichier2.txt

Dossier principal
/ Dossier secondaire:
-fichier3.txt
-fichier4.txt

Et ainsi de suite et que tout ce petit monde s'inscrive dans un fichier texte. En gros c'est pouvoir faire un listing d'un répertoire pour connaitre tous les fichiers et sous répertoires qui le compose pour faire une sorte d'arborescence dans un fichier texte.

Et donc me voilà parti en croisade mais je n'y arrive pas, soit j'arrive bien à tout lister et le problème est qu'il y a à chaque fois répétition du répertoire au lieu de grouper, exemple en illustration:

/-Conférences Linux
.........conférence.mp4

/-Conférences Linux
.........Dream Theater - A rite of Passage.mp3

Par exemple au lieu d'avoir

/-Conférences Linux
.........conférence.wav
.........Dream Theater - A rite of Passage.mp3

/-Second Répertoire
.........autrefichier.txt

.........autrefichier.txt

Bref je galère grâve, sachant que dans le code je fais aussi un test sur la première lettre du dossier/répertoire pour le classer dans une catégorie : A, B , C selon la lettre de départ.

Voici mon code de bourrin:

package src;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class listingRepertoire {

    public listingRepertoire() {
        super();
    }
   
    public  void findFiles(String directoryPath) throws IOException {
       
       
        File directory = new File(directoryPath);
       
       
         List a_list = new ArrayList();
         List b_list = new ArrayList();
         List c_list = new ArrayList();
         List d_list = new ArrayList();
         List e_list = new ArrayList();
         List f_list = new ArrayList();
         List g_list = new ArrayList();
         List h_list = new ArrayList();
         List i_list = new ArrayList();
         List j_list = new ArrayList();
         List k_list = new ArrayList();
         List l_list = new ArrayList();
         List m_list = new ArrayList();
         List n_list = new ArrayList();
         List o_list = new ArrayList();
         List p_list = new ArrayList();
         List q_list = new ArrayList();
         List r_list = new ArrayList();
         List s_list = new ArrayList();
         List t_list = new ArrayList();
         List u_list = new ArrayList();
         List v_list = new ArrayList();
         List w_list = new ArrayList();
         List x_list = new ArrayList();
         List y_list = new ArrayList();
         List z_list = new ArrayList();
         List repertoire = new ArrayList();
         List fichier_dans_repertoire = new ArrayList();
       
         String nomfich;

           
            nomfich = "C:\\liste_lolo2.txt";
           
           
            PrintWriter sortie = new PrintWriter (new FileWriter (nomfich));
         
       
       
        if(!directory.exists()){
            System.out.println("Le fichier/répertoire '"+directoryPath+"' n'existe pas");
        }else if(!directory.isDirectory()){
            System.out.println("Le chemin '"+directoryPath+"' correspond à un fichier et non à un répertoire");
        }else
       
            {
                       
            File[] subfiles = directory.listFiles();
               
           
           
           
           
            for(int i=0 ; i<subfiles.length; i++){
                if(subfiles[i].isDirectory()){
                    System.out.println("Nous avons "+subfiles[i].getName()+" qui est un répertoire");
                    String directoryPath2 = subfiles[i].getAbsolutePath();
                    String directory_name = subfiles[i].getName();
                    sortie.println(directory_name);
                    System.out.println(directory_name);
                   
                   
                   
                   
                   
                    File directory2 = new File(directoryPath2);
                    File[] subfiles2 = directory2.listFiles();
                   
                    for(int j=0; j<subfiles2.length;j++){
                    System.out.println(subfiles2[j].getName());
                   
                    repertoire.add(subfiles[i].getName());
                    fichier_dans_repertoire.add(subfiles2[j].getName());
                   
                   
                   
                    }
                       
                }
                    else if(subfiles[i].isFile()){
                    System.out.println("Nous avons "+subfiles[i].getName()+" qui est un fichier");
                   
                   
                   
                    if(subfiles[i].getName().toLowerCase().startsWith("a")){
                           
                            a_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("b")){
                           
                            b_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("c")){
                           
                            c_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("d")){
                           
                            d_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("e")){
                           
                            e_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("f")){
                           
                            f_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("g")){
                           
                            g_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("h")){
                           
                            h_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("i")){
                           
                            i_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("j")){
                           
                            j_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("k")){
                           
                            k_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("L")){
                           
                            l_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("m")){
                           
                            m_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("n")){
                           
                            n_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("o")){
                           
                            o_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("p")){
                           
                            p_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("q")){
                           
                            q_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("r")){
                           
                            r_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("s")){
                           
                            s_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("t")){
                           
                            t_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("u")){
                           
                            u_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("v")){
                           
                            v_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("w")){
                           
                            w_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("x")){
                           
                            x_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("y")){
                           
                            y_list.add(subfiles[i].getName());
                        }
                        else if(subfiles[i].getName().toLowerCase().startsWith("z")){
                           
                            z_list.add(subfiles[i].getName());
                        }
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                   
                    } // fin du else => contient des fichiers
               
               
               
               
               
                   
                    {
                {
                System.out.println("****** LISTE A ******");
                sortie.println("****** LISTE A ******");
                int k = 0;
                    while(k < a_list.size()){
                System.out.println(a_list.get(k));
                sortie.println(a_list.get(k));
                k++;                    }   
                }
               
                {
                    System.out.println("****** LISTE B ******");
                    sortie.println("****** LISTE B ******");
                    int k = 0;
                        while(k < b_list.size()){
                    System.out.println(b_list.get(k));
                    sortie.println(b_list.get(k));
                    k++;                    }   
                    }
               
                {
                    System.out.println("****** LISTE C ******");
                    sortie.println("****** LISTE C ******");
                    int k = 0;
                        while(k < c_list.size()){
                    System.out.println(c_list.get(k));
                    sortie.println(c_list.get(k));
                    k++;                    }   
                    }
               
               
                {
                    System.out.println("****** LISTE D ******");
                    sortie.println("****** LISTE D ******");
                    int k = 0;
                        while(k < d_list.size()){
                    System.out.println(d_list.get(k));
                    sortie.println(d_list.get(k));
                    k++;                    }   
                    }
               
                {
                    System.out.println("****** LISTE E ******");
                    sortie.println("****** LISTE E ******");
                    int k = 0;
                        while(k < e_list.size()){
                    System.out.println(e_list.get(k));
                    sortie.println(e_list.get(k));
                    k++;                    }   
                    }
               
                {
                    System.out.println("****** LISTE F ******");
                    sortie.println("****** LISTE F ******");
                    int k = 0;
                        while(k < f_list.size()){
                    System.out.println(f_list.get(k));
                    sortie.println(f_list.get(k));
                    k++;                    }   
                    }
               
                {
                    System.out.println("****** LISTE G ******");
                    sortie.println("****** LISTE G ******");
                    int k = 0;
                        while(k < g_list.size()){
                    System.out.println(g_list.get(k));
                    sortie.println(g_list.get(k));
                    k++;                    }   
                    }
               
                {
                    System.out.println("****** LISTE H ******");
                    sortie.println("****** LISTE H ******");
                    int k = 0;
                        while(k < h_list.size()){
                    System.out.println(h_list.get(k));
                    sortie.println(h_list.get(k));
                    k++;                    }   
                    }
               
                {
                    System.out.println("****** LISTE I ******");
                    sortie.println("****** LISTE I ******");
                    int k = 0;
                        while(k < i_list.size()){
                    System.out.println(i_list.get(k));
                    sortie.println(i_list.get(k));
                    k++;                    }   
                    }
               
                {
                    System.out.println("****** LISTE J ******");
                    sortie.println("****** LISTE J ******");
                    int k = 0;
                        while(k < j_list.size()){
                    System.out.println(j_list.get(k));
                    sortie.println(j_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE K ******");
                    sortie.println("****** LISTE K ******");
                    int k = 0;
                        while(k < k_list.size()){
                    System.out.println(k_list.get(k));
                    sortie.println(k_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE L ******");
                    sortie.println("****** LISTE L ******");
                    int k = 0;
                        while(k < l_list.size()){
                    System.out.println(l_list.get(k));
                    sortie.println(l_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE M ******");
                    sortie.println("****** LISTE M ******");
                    int k = 0;
                        while(k < m_list.size()){
                    System.out.println(m_list.get(k));
                    sortie.println(m_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE N ******");
                    sortie.println("****** LISTE N ******");
                    int k = 0;
                        while(k < n_list.size()){
                    System.out.println(n_list.get(k));
                    sortie.println(n_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE O ******");
                    sortie.println("****** LISTE O ******");
                    int k = 0;
                        while(k < o_list.size()){
                    System.out.println(o_list.get(k));
                    sortie.println(o_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE P ******");
                    sortie.println("****** LISTE P ******");
                    int k = 0;
                        while(k < p_list.size()){
                    System.out.println(p_list.get(k));
                    sortie.println(p_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE Q ******");
                    sortie.println("****** LISTE Q ******");
                    int k = 0;
                        while(k < q_list.size()){
                    System.out.println(q_list.get(k));
                    sortie.println(q_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE R ******");
                    sortie.println("****** LISTE R ******");
                    int k = 0;
                        while(k < r_list.size()){
                    System.out.println(r_list.get(k));
                    sortie.println(r_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE S ******");
                    sortie.println("****** LISTE S ******");
                    int k = 0;
                        while(k < s_list.size()){
                    System.out.println(s_list.get(k));
                    sortie.println(s_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE T ******");
                    sortie.println("****** LISTE T ******");
                    int k = 0;
                        while(k < t_list.size()){
                    System.out.println(t_list.get(k));
                    sortie.println(t_list.get(k));
                   
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE U ******");
                    sortie.println("****** LISTE U ******");
                    int k = 0;
                        while(k < u_list.size()){
                    System.out.println(u_list.get(k));
                    sortie.println(u_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE V ******");
                    sortie.println("****** LISTE V ******");
                    int k = 0;
                        while(k < v_list.size()){
                    System.out.println(v_list.get(k));
                    sortie.println(v_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE W ******");
                    sortie.println("****** LISTE W ******");
                    int k = 0;
                        while(k < w_list.size()){
                    System.out.println(w_list.get(k));
                    sortie.println(w_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE X ******");
                    sortie.println("****** LISTE X ******");
                    int k = 0;
                        while(k < x_list.size()){
                    System.out.println(x_list.get(k));
                    sortie.println(x_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE Y ******");
                    sortie.println("****** LISTE Y ******");
                    int k = 0;
                        while(k < y_list.size()){
                    System.out.println(y_list.get(k));
                    sortie.println(y_list.get(k));
                    k++;                    }   
                    }
                {
                    System.out.println("****** LISTE Z ******");
                    sortie.println("****** LISTE Z ******");
                    int k = 0;
                        while(k < z_list.size()){
                    System.out.println(z_list.get(k));
                    sortie.println(z_list.get(k));
                    k++;                    }   
                    }
               
               
               
               
                    int k = 0;
                    int j = 0;
                    int l = 0;
           
                                       
               
                   
                   
                   
                   
                   
                    while(k < repertoire.size()){
                       
                        List liste = new ArrayList();
                       
                        sortie.println("");
                        sortie.println("/-"+repertoire.get(k));
                        System.out.println(repertoire.get(k));
                       
                        sortie.println("........."+fichier_dans_repertoire.get(k));
                        liste.add(fichier_dans_repertoire.get(k));
                       
                       
                        System.out.println(fichier_dans_repertoire.get(k));
               
                        k++;
                           
                }   
                   
                   
                    }
           
                    sortie.close();
       
            }
           
           
           
            }   
       
            }

          
   
    public static void main(String[] args) {
        listingRepertoire finder = new listingRepertoire();
        try {
            finder.findFiles("C:\\Nouveau dossier\\test\\Divers\");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

donc le répertoire à lister est transmis en string dans le main (a la fin du code) et ensuite le fichier créé est c:\liste_lolo2

Oui je sais.. c'est un peu barbare comme code mais je débute et j'essai de faire avec ce que je sais/pense pouvoir marcher ^^

Merci de me dire ce qu'il faudrait que je fasse pour faire tourner le tout ou même me proposer un code se rapprochant de l'idée de départ. Merci

(j'ai cherché sur le forum et je suis tombé sur un code mais il ne liste pas les sous répertoires et c'est ça le plus compliqué pour moi).

Merci par avance.

2 réponses

Messages postés
25
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
10 mai 2010

Bon finalement j'ai trouvé tout seul, en fait j'avais codé avec le genou l'ancien.. bon celui là ne doit pas être mieux pour un pro de Java mais au moins il marche à peu près, je met le code en espérant aider quelqu'un:

package src;
import java.awt.List;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.LayoutStyle;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class FreddouListing {
   

   
   
   
   
   
   
    public void lancerListing(String chemin_a_lister)throws IOException{
       
       

         String nomfich = "C:\\liste_lolo2.txt";
           
           
            PrintWriter sortie = new PrintWriter (new FileWriter (nomfich));
       
       
        File url_a_lister = new File(chemin_a_lister);
           
            if(!url_a_lister.exists()){
                System.out.println("Le fichier/répertoire '"+url_a_lister+"' n'existe pas");
            }else if(url_a_lister.isFile()){
                System.out.println("Le chemin '"+url_a_lister+"' correspond à un fichier et non à un répertoire");
            }else if(url_a_lister.isDirectory()){
                System.out.println("Le chemin '"+url_a_lister+"' correspond bien à un nom de répertoire, listing en cours....");
               
               
                start_listing_repertoire(url_a_lister, sortie);
               
                sortie.close();   
               
            } // fin du elseif est un répertoire
   
           
           
           
           
           
           
           
       
       
       
    }//fin de la méthode lancerListing
   
   
   
   
   
   
   
   
   
   
   
   
   
    // La méthode récupère en param l'url du chemin a lister, qui est un dossier
    public void start_listing_repertoire(File repertoire_a_lister, PrintWriter sortie) {
       
   
       
        // on créé une variable qui contient le listing du répertoire passé en param
        File[] fichiers_dans_sous_repertoire = repertoire_a_lister.listFiles();
       
        //initialisation de i pour être utilisé dans un while pour lister le répertoire
        int i = 0;
       
        //tant que i est inférieur au nombre max de fichiers dans le répertoire, on liste et on incrémente i
        while(i < fichiers_dans_sous_repertoire.length){
           
           
           
           
            if(fichiers_dans_sous_repertoire[i].isDirectory()){
                // Le fichier est un répertoire, on le renvoi dans la même méthode pour le lister à son tour
                System.out.println("c'est un repertoire "+fichiers_dans_sous_repertoire[i]);
                sortie.println(/*"c'est un repertoire "+*/fichiers_dans_sous_repertoire[i]);
                start_listing_repertoire(fichiers_dans_sous_repertoire[i], sortie);
               
            }
           
            if(fichiers_dans_sous_repertoire[i].isFile()){
                //C'est que le fichier n'est pas un répertoire, on l'envoie dans la méthode pour fichiers
                System.out.println("c'est un fichier "+fichiers_dans_sous_repertoire[i]);
                sortie.println(/*"c'est un fichier "+*/fichiers_dans_sous_repertoire[i]);
            //    sortie.println("TOTO");
                start_listing_fichiers(fichiers_dans_sous_repertoire[i]);
            }
       
       
        i++;
       
       
       
        }
       
       
        }
       
       
   

    public void start_listing_fichiers(File repertoire_a_lister) {
   
    }

    public static void main(String[] args) {
        FreddouListing listing = new FreddouListing();
       
   
        try {
            listing.lancerListing("c:\\Nouveau Dossier\\test\\Divers\");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Messages postés
25
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
10 mai 2010

Si quelqu'un se sent d'attaque... c'est un vrai défi... le plus gros sera sans doute même de comprendre ce que j'ai voulu faire dans mon code lol