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

Entrée/Sortie Java Discussion :

Recherche de Fichiers sur tout le disque


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut Recherche de Fichiers sur tout le disque
    Bonjour ce code me permet de stocker tous les noms de fichiers de mon disque dur.
    ( je n'ai pas géré les exceptions)

    le probléme est qu'il m'affiche juste le nom et j'aimerais stocker le chemin complet de ce fichier pour pouvoir y avoir accés aprés

    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
     
    import java.io.*;
    import java.util.*;
     
    public class TestFileList
    {
     
    	public static void main(String args[])
    	{
     
     
    		File fichier = new File("C:\\");
    		TestFileList.visiterDisque(fichier);
     
    	}
     
    	public static void visiterDisque(File dir)
    	{
    		ArrayList list_fichier = new ArrayList();
     
     
    	        if (dir.isDirectory())
    	        {
    	            String[] fils = dir.list();
    	            for (int i=0; i<fils.length; i++)
    	            {
     
    					list_fichier.add(fils[i]);
    	                visiterDisque(new File(dir, fils[i]));
    	            }
    	        }
     
    	        for ( int i =0 ; i < list_fichier.size() ; i++ )
    	        {
    				System.out.println(list_fichier.get(i));
    			}
     
        }
     
     
    }

    Merci

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    sur ton File que tu veux afficher

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Salut,

    Oui en effet mais je ne sais pas ou placé cette methode pour que cela fonctionne


    Merci

  4. #4
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par bonjour69
    Salut,

    Oui en effet mais je ne sais pas ou placé cette methode pour que cela fonctionne


    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(((File)list_fichier.get(i)).getAbsolutePath());

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Salut,


    malheuresement j'ai cette erreur étrange :

    Exception in thread "main" java.lang.ClassCastException
    at TestFileList.visiterDisque(TestFileList.java:38)
    at TestFileList.visiterDisque(TestFileList.java:31)
    at TestFileList.visiterDisque(TestFileList.java:31)
    at TestFileList.main(TestFileList.java:12)


    Merci

  6. #6
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par bonjour69
    Salut,


    malheuresement j'ai cette erreur étrange :

    Exception in thread "main" java.lang.ClassCastException
    at TestFileList.visiterDisque(TestFileList.java:38)
    at TestFileList.visiterDisque(TestFileList.java:31)
    at TestFileList.visiterDisque(TestFileList.java:31)
    at TestFileList.main(TestFileList.java:12)


    Merci
    Ah mais c parce que list_fichier est une liste de "Strings", donc fais un new File(taString) pour appliquer getAbsolutePath()...

    (PS: C'est le bordel quand on n'utilise pas les generics...)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Salut,

    excuse moi je n'ai pas trés bien saisi ce que tu voulais me faire faire,
    Merci

  8. #8
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par bonjour69
    Salut,

    excuse moi je n'ai pas trés bien saisi ce que tu voulais me faire faire,
    Merci
    En gros, ceci:
    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
    public class TestFile {
     
        static void visiterDisque(File dir) {
            for(File f : dir.listFiles()) {
                System.out.println(f.getAbsolutePath());
                if(f.isDirectory())
                    visiterDisque(f);
            }
        }
     
        public static void main(String... args) {
            visiterDisque(new File("C:\\"));
        }
     
    }

  9. #9
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Je me permet une petite précision car la personne n'a pas l'air de maitriser tout ça :
    Dans ce que te montre Rom, en fait il a remplacé ta liste de String ( liste_fichier ) par une liste de File en utilisant la méthode "listFiles()" plutot que "list()".
    de ce fait tu n'as plus besoin de faire ce qu'il te conseillait au départ ( faire un "new file" ) :
    System.out.println(new File((Striing)list_fichier.get(i)).getAbsolutePath());
    mais de faire uniquement :
    System.out.println(((File)list_fichier.get(i)).getAbsolutePath());

    de plus je pense qu'au niveau performance c'est mieux car ça t'évite une instanciation de File par fichier.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    en fait la solution de Rom en changeant ma maniere de faire ne marche pas et
    en faisant :
    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
     
    import java.io.*;
    import java.util.*;
     
    public class TestFileList
    {
    	static ArrayList list_fichier = new ArrayList();
    	public static void main(String args[])
    	{
     
     
    		File fichier = new File("C:\\");
    		TestFileList.visiterDisque(fichier);
     
    	}
     
    	public static void visiterDisque(File dir) throws  ClassCastException
    	{
     
     
     
    	        if (dir.isDirectory())
    	        {
     
    	            String[] fils = dir.list();
     
    	            for (int i=0; i<fils.length; i++)
     
    	            {
     
    					list_fichier.add(fils[i]);
    	                visiterDisque(new File(dir, fils[i]));
    	            }
    	        }
     
    	        for ( int i =0 ; i < list_fichier.size() ; i++ )
    	        {
     
    				System.out.println(new File((String)list_fichier.get(i)).getAbsolutePath());
     
    			}
     
        }
     
     
     
    }
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.out.println(new File((String)list_fichier.get(i)).getAbsolutePath());
    j'obtient sur tous les fichiers :
    le_chemin_de_mon_dossier_courant/nom_de_fichier_de_mon disque
    et cela quelquesoit l'emplacement de ce fichier.

    Donc il y a un leger probléme :s

    Merci

  11. #11
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Tu n'as lu ma réponse et celle de rom ! quand on te dis de remplacer une liste de String par une liste de File, il faut que tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] fils = dir.list();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    File [] fils = dir.listFiles();
    De plus ton probème est facilement explicable, le conseil de rom concernant le "new file" est erroné si tu utilise la méthode list.
    Si tu prenais la peine de consulter un temps soit peu la javadoc, tu verrais cela :
    "Names denoting the directory itself and the directory's parent directory are not included in the result."
    ...

  12. #12
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    bon puis j'en ai marre, voilà le code correct testé et approuvé.
    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
     
    package gui;
     
    import java.io.*;
    import java.util.*;
     
    public class TestFileList
    {
    	static ArrayList list_fichier = new ArrayList();
    	public static void main(String args[]){
    		File fichier = new File("D:\\");
    		TestFileList.visiterDisque(fichier);
    		for(int i=0;i<list_fichier.size();i++){
    			System.out.println(((File)list_fichier.get(i)).getAbsolutePath());
    		}
    	}
    	public static void visiterDisque(File dir){
            if (dir.isDirectory()){
                File [] fils = dir.listFiles();
                for (int i=0; i<fils.length; i++){
    	   list_fichier.add(fils[i]);
                    visiterDisque(fils[i]);
                }
            }else{
            	return;
            }
    	}
    }

  13. #13
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par iohack
    bon puis j'en ai marre, voilà le code correct testé et approuvé.
    Le mien était correct, et plus simple

  14. #14
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Citation Envoyé par ®om
    Le mien était correct, et plus simple
    certe je suis d'accord, c'est ce que j'aurais fait à quelques exceptions pret ( vérification sur listFiles pour un retour à null ), mais je trouve ce code moins explicatif pour un débutant.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    merci Iohack

    je comprend bien ton code il fonctionne correctement mais il me faut enlever :

    Merci

  16. #16
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par iohack
    certe je suis d'accord, c'est ce que j'aurais fait à quelques exceptions pret ( vérification sur listFiles pour un retour à null ), mais je trouve ce code moins explicatif pour un débutant.
    Pourquoi listFiles retournerait null, vu que le fichier est forcément un répertoire...?

  17. #17
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    bonjour69, pourquoi utilises-tu une ArrayList? Ca ne te sert à rien là...

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 135
    Points : 44
    Points
    44
    Par défaut
    Salut,


    Simplement car je veux pouvoir trier et manipuler ces noms de fichier plus tard. Mais ces vrais que pour les afficher il n'y a pas besoin d'ArrayList.

    Merci

  19. #19
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par bonjour69
    Salut,


    Simplement car je veux pouvoir trier et manipuler ces noms de fichier plus tard. Mais ces vrais que pour les afficher il n'y a pas besoin d'ArrayList.

    Merci
    OK

    Un petit problème alors, si tu appelles 2x ta méthode, les noms de fichiers seront en double dans ton ArrayList

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Comment rechercher des fichiers sur un disque.
    Par vijeo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/08/2017, 10h17
  2. Réponses: 1
    Dernier message: 09/09/2013, 14h58
  3. [Système][fichier] recherche de fichier dans tout le disque dur
    Par helonear dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 15/12/2010, 10h43
  4. Rechercher un fichier sur le disque dur et le sup.
    Par Kysers95 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/09/2007, 00h38
  5. Réponses: 3
    Dernier message: 16/11/2006, 11h54

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