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

avec Java Discussion :

recuperer seulement les derniers sous dossiers d'un repertoire


Sujet :

avec Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut recuperer seulement les derniers sous dossiers d'un repertoire
    Salut,


    j'ai un problème de rècuperer les sous dossiers mais il m'affiche aussi le répertoire avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    public class Lister_Rep {
     
        private String initialpath = "";
        private Boolean recursivePath = false;
        public int filecount = 0;
        public int dircount = 0;
          ArrayList<String> fichier=new ArrayList<String>();
     
     
        public Lister_Rep(String path, Boolean subFolder)  {
            super();
            this.initialpath = path;
            this.recursivePath = subFolder;
        }
     
        Lister_Rep() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
     
        public ArrayList<String> Lister_Rep() {
           this.listDirectory(this.initialpath);
            return fichier;
     
     
     
        }
    public ArrayList<String> listDirectory(String dir) {
            File file = new File(dir);
            File[] files = file.listFiles();
     
     
            if (files != null) {
                for (int i = 0; i < files.length; i++) {
     
                    if (files[i].isDirectory() == true) {System.out.println("Dossier: " + files[i].getAbsolutePath());fichier.add(files[i].getName());}
     
     
     
     
     
     
     
     
     
                if(files[i].isDirectory() == true && this.recursivePath == true) {
                        this.listDirectory(files[i].getAbsolutePath());
     
     
     
                    }
     
                 else  {
     
     
                     System.out.println("nb:"+filecount++);}
                }}
     
            return fichier;
     
     
             public static void main( String [] args ) throws FileNotFoundException{  
    Lister_path disk = new Lister_path(pathlist, true);
     
                ArrayList<String> resultat = disk.Lister_path();}}
    par exemple je voudrais afficher les sous dossiers de C:\Users\W.S.I\Desktop\Bureau\
    mais Bureau contient aussi \dossiers\
    et \dossiers\ contient aussi les derniers dossiers \1 et \2 et \3
    donc je veux récupérer que \1 et \2 et \3 mais il m'affiche aussi le \dossiers

    merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    et il se passe quoi si le sous-répertoire \3 contient aussi les sous-répertoires \toto et \tata ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    oui je vous comprends mais j'ai besoin seulement de recuperer que \1 \2 \3 puisque j'ai pas eu dedans \1 \2 \3 que des fichiers..donc j'arrive pas à resoudre ce probleme..

    Ce sont mes sous derniers répertoires dans mon path selectionné

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Non tu ne me comprends pas.

    Il y a deux possibilités :

    - Soit tu sais que tu veux récupérer \1 \2 \3 et dans ce cas la solution au problème est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println("C:\\Users\\W.S.I\\Desktop\\Bureau\\dossiers\\1");
    System.out.println("C:\\Users\\W.S.I\\Desktop\\Bureau\\dossiers\\2");
    System.out.println("C:\\Users\\W.S.I\\Desktop\\Bureau\\dossiers\\3");
    - Soit tu ne sais pas à l'avance ce qu'il va y avoir, et dans ce cas, tu dois nous dire comment tu vas détecter que les répertoires que tu veux c'est \1 \2 \3, sur quels critères te bases-tu, sachant que si certains d'entre eux ne contiennent peut-être que des fichiers, il n'y a aucune raison que ce soit aussi le cas des autres, évidemment.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    si je selctionne un path que je veux..je connais que les sous derniers répertoires est \1 \2 \3.. en fait j'aime recuperer que les sous repertoire et normalement ça marche pour n'importe quel path..

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    non je ne sais pas à l'avance selon n'importe quel path je voudrai recuperer que les sous derniers sous répertoires seulement

  7. #7
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Tu lis l'entierté de l'arbre avec une méthode récursive et si directory: tu rejoues la méthode, si file, tu l'ajoutes a une liste de résultats.

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    Salut Mr Yildiz..
    j'ai fait ce code là mais ça marche pas il y'aura l'ajout aussi de repertoire avant de ses sous dernieres répertoires ...j'ai pas vous compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    public class Lister_Rep {
     
        private String initialpath = "";
        private Boolean recursivePath = false;
        public int filecount = 0;
        public int dircount = 0;
          ArrayList<String> fichier=new ArrayList<String>();
     
     
        public Lister_Rep(String path, Boolean subFolder)  {
            super();
            this.initialpath = path;
            this.recursivePath = subFolder;
        }
     
        Lister_Rep() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
     
        public ArrayList<String> Lister_Rep() {
           this.listDirectory(this.initialpath);
            return fichier;
     
     
     
        }
    public ArrayList<String> listDirectory(String dir) {
            File file = new File(dir);
            File[] files = file.listFiles();
     
     
            if (files != null) {
                for (int i = 0; i < files.length; i++) {
     
                    if (files[i].isDirectory() == true) {System.out.println("Dossier: " + files[i].getAbsolutePath());fichier.add(files[i].getName());}
     
     
     
     
     
     
     
     
     
                if(files[i].isDirectory() == true && this.recursivePath == true) {
                        this.listDirectory(files[i].getAbsolutePath());
     
     
     
                    }
     
                 else  {
     
     
                     System.out.println("nb:"+filecount++);}
                }}
     
            return fichier;
     
     
             public static void main( String [] args ) throws FileNotFoundException{  
    Lister_path disk = new Lister_path(pathlist, true);
     
                ArrayList<String> resultat = disk.Lister_path();}}
    Je voudrai recuperer seulement les sous derniers repertoires mais ça marche pas pour ce code il ajoute le nom de repertoire avant de ses sous derniers

  9. #9
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    ton fichiers add, faut le mettre dans un else {...} sinon il sera appelé tout le temps, même pour un directory.

    et dans le cas d'un directory, il faut rappeler la méthode pour vérifier les sous répertoire également

    donc (à traduire en java correct)

    checkForFiles(String current) {
    File[] files = new File(current).getFiles();
    if(files == null) {return;}
    for(file:files) {
    if(file.isDirectory()){checkForFile(file.name)}
    else{fichiers.add(file.name);}
    }

    }

  10. #10
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public ArrayList<String> listDirectory(String dir) {
            File file = new File(dir);
            File[] files = file.listFiles();
     
     
            if (files != null) {
                for (int i = 0; i < files.length; i++) {
     
     
     
     
     
     
                if(files[i].isDirectory() == true && this.recursivePath == true) {
                        this.listDirectory(files[i].getAbsolutePath());}
     
     
     
     
     
                else {fichier.add(files[i].getName());}
     
     
     
     
        }  }return fichier;}
    else normalement ça vaut dire s'il est fichier alors add..mais c'est pour les fichiers ...

    comme ça les noms des fichiers qui seront ajoutés à la liste et non pas les sous derniers répertoires malheureusement

  11. #11
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    il suffit de mettre dans ta fonction

    boolean hasChildren= false;
    for(file:files) {
    if(file.isDirectory){...; hasChildren = true;}
    else{...}
    }

    if(!hasChildren){fichiers.add(current);}

  12. #12
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public ArrayList<String> listDirectory(String dir) {
            File file = new File(dir);
            File[] files = file.listFiles();
     
          boolean hasChildren= false;
            if (files != null) {
                for (int i = 0; i < files.length; i++) {
    if(files[i].isDirectory() == true ) {
                        this.listDirectory(files[i].getAbsolutePath());
                                                      hasChildren = true;          }
     
     
    else {
         System.out.println("cccccc");
                }
                if(!hasChildren){fichier.add(files[i].getName());}
    aussi il y'aura l'ajout des noms des fichiers comme ça

  13. #13
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    oui si tu veux seulement les derniers dossiers c'est dir que tu dois mettre

    if(!hasChildren){fichier.add(files[i].getName());}

    devient

    if(!hasChildren){fichier.add(dir);}

Discussions similaires

  1. [AC-2007] Code pour supprimer tous les fichiers, sous-dossiers d'un dossier
    Par lio33 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/04/2015, 19h26
  2. [Débutant] Recuperer seulement le nom des dossiers avec GetDirectories
    Par tardmonkey dans le forum VB.NET
    Réponses: 5
    Dernier message: 09/01/2013, 13h42
  3. [Débutant] Enumerer des sous dossiers dans un repertoire
    Par tardmonkey dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/12/2012, 17h11
  4. Recuperer que le premier sous dossier
    Par stratocasters dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 15/06/2012, 13h14
  5. Réponses: 1
    Dernier message: 09/03/2009, 16h34

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