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 :

Trouver un nom de fichier dans une liste


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Par défaut Trouver un nom de fichier dans une liste
    Bonjour,
    J'ai un nom de fichier mais on ne sait pas exactement ou il se trouve je dois donc le chercher dans le chemin principal.
    J'ai effectué la recherche grâce au code que j'ai pu récupéré et l'aide des personnes de se forum, mais je n'arrive pas à débuter la recherche du fichier dans cette recherche récursive.
    Pouvez vous me mettre sur la voie ?

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Donne le code que tu as commencé à écrire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Par défaut
    Voici le code qui à déjà été rédigé. Mais actuellement il affiche seulement la liste des répertoires, sous-répertoires et fichier du chemin renseigné.
    Et je voudrais qu'il trouve le fichier que je cherche dans toute cette liste....

    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
    import java.io.*; 
    public class recursivite {
    	public static void listeRepertoire ( File repertoire ) {
            System.out.println ( repertoire.getAbsolutePath());
     
            if ( repertoire.isDirectory ( ) ) {
                    File[] list = repertoire.listFiles();
                    if (list != null){
    	                for ( int i = 0; i < list.length; i++) {
    	                        // Appel récursif sur les sous-répertoires
    	                        listeRepertoire( list[i]);
     
    	                } 
                    } else {
                    	System.err.println(repertoire + " : Erreur de lecture.");
                    }
            } 
    } 
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		recursivite.listeRepertoire(new File("C:\\Users\\Tiphanie\\Documents"));
     
     
    	}
     
    }

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Bonjour,

    Tu trouveras justement ici une discussion qui traite, entre autres choses, de la recherche d'un fichier:

    http://www.developpez.net/forums/d66...tance-fichier/

    C'est une source de boijea que tu dois adapter à ton cas.

    Cordialement,

    Dan.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Par défaut
    Bonjour,
    Merci de ta réponse c'est bien ce que je cherche !!
    J'ai adapté le code mais le problème c'est que j'ai des erreurs et que je ne sais pas pourquoi !!

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    import java.io.*;
    public class trouvefich {
    
    	/**
    	 * @param args
    	 */
    	
    	//Vérifie si le fichier est un répertoire
    	//
    	class MyFileFilterDir implements FilenameFilter {
    	    public boolean accept(File dir, String name) {
    	        File theFile = new File(dir + File.separator + name);
    	        return theFile.isDirectory();
    	    }
    	}
    	 
    	//Vérifie si le fichier n'est pas un répertoire et possède le nom correct
    	//
    	class MyFileFilterFile implements FilenameFilter {
    	    public boolean accept(File dir, String name) {
    	        File theFile = new File(dir + File.separator + name);
    	        if (theFile.isDirectory()) {
    	            return false;
    	        }
    	 
    	        if (name.toLowerCase().compareTo(SearchFile.fileName.toLowerCase()) == 0) {
    	            return true;
    	        }
    	 
    	        return false;
    	    }
    	   
    	}
    	 
    	public class SearchFile {
    	    static public String fileName  = "preferencesContext.xml";
    	    static public String dirResult = null;
    //J'ai rajouté cette accolade !!	
    }
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String startPoint = "C:\\Users\\Tiphanie\\Desktop\\Vanilla-TomCat\\vanilla-tomcat-mysql-1.30-RC5\\webapps\\";
    		 
    	       if (searchDir(startPoint)) {
    	            System.out.println("J'ai trouvé le fichier " + SearchFile.fileName + " dans " + SearchFile.dirResult);
    	            return;
    	       }
    	 
    	       System.out.println("Je n'ai pas trouvé le fichier " + SearchFile.fileName + " dans " + startPoint);
    	 
    	    }
    	 
    	    //Cherche dans un répertoire
    	    //
    	    public static boolean searchDir(String dir) {
    	    	SearchFile.dirResult = dir;
    	       File myDir = new File(dir);
    	       String theFiles[] = myDir.list(new MyFileFilterFile());
    	 
    	       if ((theFiles != null) && (theFiles.length > 0)) {
    	           return true;
    	       }
    	       else {
    	           String theDirs[] = myDir.list(new MyFileFilterDir());
    	 
    	           if (theDirs != null) {
    	             for (int i = 0; i < theDirs.length; i++) {
    	               if (searchDir(dir + File.separator + theDirs[i])) {
    	                   return true;
    	               }
    	             }
    	           }
    	       }
    	 
    	       return false;
    	    }
    	}
    (j'ai mis le texte des erreurs en rouges)
    Pour Filename et dirresult il me dit que e ne peut pas les déclarer en Static !!
    il me soulignait aussi Filename et dirresult de partout j'ai donc rajouter "SearchFile." devant mes deux variables depuis il ne me les soulignes plus
    Ensuite il me souligne :
    new MyFileFilterFile() et new MyFileFilterDir() mais je ne comprends pas l'erreur !!!

  6. #6
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Bonjour,

    J'ai modifié un peu ton code pour n'avoir plus erreurs.


    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    import java.io.*;
     
    public class Trouvefich 
    {
     
     
    	//Vérifie si le fichier est un répertoire
    	//
    	class MyFileFilterDir implements FilenameFilter
    	{
    	    public boolean accept(File dir, String name)
    	    {
    	        File theFile = new File(dir + File.separator + name);
    	        return theFile.isDirectory();
    	    }
    	}
     
    	//Vérifie si le fichier n'est pas un répertoire et possède le nom correct
    	//
    	class MyFileFilterFile implements FilenameFilter
    	{
    	    public boolean accept(File dir, String name)
    	    {
    	        File theFile = new File(dir + File.separator + name);
    	        if (theFile.isDirectory())
    	        {
    	            return false;
    	        }
     
    //	        if (name.toLowerCase().compareTo(SearchFile.fileName.toLowerCase()) == 0)
    	        if (name.toLowerCase().compareTo(fileName.toLowerCase()) == 0)
    	        {
    	            return true;
    	        }
     
    	        return false;
    	    }
     
    	}
     
    	// Ajouter ces 2 lignes
    	public static String fileName  = "preferencesContext.xml";
    	public static String dirResult = null;
     
    	// pour remplace les lignes suivantes
    //	public class SearchFile
    //	{
    //	    static public String fileName  = "preferencesContext.xml";
    //	    static public String dirResult = null;
    //		//J'ai rajouté cette accolade !!
    //	}
     
    	public static void main(String[] args)
    	{
    		Trouvefich test = new Trouvefich ();
     
    		// TODO Auto-generated method stub
    		String startPoint = "C:\\Users\\Tiphanie\\Desktop\\Vanilla-TomCat\\vanilla-tomcat-mysql-1.30-RC5\\webapps\\";
     
    	    if (test.searchDir(startPoint))
    	    {
    	        System.out.println("J'ai trouvé le fichier " + fileName + " dans " + dirResult);
    	        return;
    	    }
     
    	    System.out.println("Je n'ai pas trouvé le fichier " + fileName + " dans " + startPoint);
     
    	}
     
    	//Cherche dans un répertoire
    	//
    	public boolean searchDir(String dir)
    	{
    		dirResult = dir;
    	    File myDir = new File(dir);
    	    String theFiles[] = myDir.list(new MyFileFilterFile());
     
    	    if ((theFiles != null) && (theFiles.length > 0))
    	    {
    	        return true;
    	    }
    	    else
    	    {
    	        String theDirs[] = myDir.list(new MyFileFilterDir());
     
    	        if (theDirs != null)
    	        {
    	            for (int i = 0; i < theDirs.length; i++)
    	            {
    	                if (searchDir(dir + File.separator + theDirs[i]))
    	                {
    	                   return true;
    	                }
    	            }
    	        }
    	    }
     
    	    return false;
    	}
    }


    Essai de suivre les recommandations pour les règles de programmation en Java pour les classes, nom variables, ...

    Je n'ai pas testé ce code mais la compilation ne donne pas d'erreurs

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Par défaut
    Merci beaucoup !! Il fonctionne parfaitement je vais regarder quels modifications tu a apporté pour y voir un peu plus claire !! Il est vrai que je ne suis pas les recommandations mais pour le moment se ne sont que des programme test fait vite fais. J'intègrerai le code final au programme !!
    Encore merci =) !!!

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Par défaut
    J'ai une nouvelle question !!! (et oui ....)
    Je me suis rendus compte que dans tous les dossiers il y a plusieurs fichier qui porte le même nom il faut aussi que je les récupère...
    Je pense qu'il faut que j'utilise un For mais je ne sais pas ou le mettre ni de quoi a quoi il faut le faire varié .....

    Merci d'avance : ) !!

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Citation Envoyé par tiph02 Voir le message
    J'ai une nouvelle question !!! (et oui ....)
    Je me suis rendus compte que dans tous les dossiers il y a plusieurs fichier qui porte le même nom il faut aussi que je les récupère...
    Je pense qu'il faut que j'utilise un For mais je ne sais pas ou le mettre ni de quoi a quoi il faut le faire varié .....

    Merci d'avance : ) !!
    C'est exact, la recherche cesse dès l'obtension d'un résultat positif, je n'ai pas encore eu le temps de voir les modifs à faire...


    Cordialement,

    Dan

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Par défaut
    J'ai réussi à faire ce que je souhaitai grâce à de l'aide donc si tu a besoin de cette solution je l'envoi !!!
    Merci !

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Citation Envoyé par tiph02 Voir le message
    J'ai réussi à faire ce que je souhaitai grâce à de l'aide donc si tu a besoin de cette solution je l'envoi !!!
    Merci !
    Comme je suis pas mal occupé j'accepte volontiers merci !!!

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 164
    Par défaut
    Et voici !!
    L'ayant tester il fonctionne sans problème normalement !!!

    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.File;
    	import java.util.ArrayList;
    import java.util.List;
     
    public class Test { 
    	 public static void listeRepertoire (File repertoire) {
    //	  List c = new ArrayList();
    	        String Nomfich = "fichier.type";
    	  if (repertoire.isDirectory()) {
    		  File[] list = repertoire.listFiles();
    	      if (list != null){
    	    	  for (int i = 0; i < list.length; i++) {
    	    		  if(list[i].isDirectory()){
    	    			  listeRepertoire(list[i]);
    /*    			  System.out.println(list[i].getAbsolutePath());
        			  c.add(l);*/
    	    		  }
     	    		  else if (list[i].isFile()) {
     	    			  if (list[i].getName().equals(Nomfich)){
     	    				 System.out.println(list[i].getAbsolutePath());
     	    			  }
    	    			//System.out.println(list[i].getName());
     	    		  }
    	    	  } 
    	      } else {
    	    	  System.err.println(repertoire + " : Erreur de lecture.");
    	      }
    	  } 
     
    	 } 
     
     
    	public static void main(String[] args) {
     
    		String startPoint = "CHEMIN";
    		File f = new File(startPoint);
    		listeRepertoire(f);
     
    	}
     
    }
    Bon courage !!
    Cordialement !!

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut Pour les "doublons"
    Bonjour,

    Merci.

    Modifs pour trouver d'éventuels doublons du fichier recherché:

    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
       import java.io.File;
       import java.util.ArrayList;
       import java.util.List;
     
        public class TrouverUnFichier
       {
          static boolean trouve = false; // <<<<<<<<<<<<<<<<<<<<<<<<
          static String Nomfich = "nomFichier.sonType"; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
     
           public static void listeRepertoire (File repertoire)
          {
          //	  List c = new ArrayList();
             //String Nomfich = "fichier.type"; // <<<<<<<<<<<<<<<<<<<<<<< deplace
             if (repertoire.isDirectory())
             {
                File[] list = repertoire.listFiles();
                if (list != null)
                {
                   for (int i = 0; i < list.length; i++) {
                      if(list[i].isDirectory())
                      {
                         listeRepertoire(list[i]);
                      /*    			  System.out.println(list[i].getAbsolutePath());
                      c.add(l);*/
                      }
                      else if (list[i].isFile())
                      {
                         if (list[i].getName().equals(Nomfich))
                         {
                            System.out.println(list[i].getAbsolutePath());
                            trouve = true; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                         }
                      //System.out.println(list[i].getName());
                      }
                   }
                } 
                /*else
                {
                // ici nous n'avons pas une veritable erreur mais "non trouve dans ce repertoire"
                // alors il vaut mieux ne rien mettre sinon le resultat, dans le cas ou l'on
                // fait une recherche sur tout le disque, sera perdu dans une liste enorme, et
                // ajouter (ou modifier) les lignes commentees // <<<<<<<<<<<<<<<<<<<<<<<<<
                   //System.err.println(repertoire + " : Erreur de lecture.");
                }  */
             }
          }
     
     
           public static void main(String[] args) {
     
             System.out.println("La recherche est lancee, veuillez patienter et attendre le message FIN!"); // <<<<<<<<<<<<<<<<<<<<<<<<
             String startPoint = "C:\\"; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< pour les doublons
             File d = new File(startPoint);
             listeRepertoire(d);
     
             System.out.println("FIN de la recherche."); // <<<<<<<<<<<<<<<<<<<<<
             if (trouve == false) // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                System.out.println("Fichier " + Nomfich + " non trouve"); // <<<<<<<<<<<<<<<<<<<<<<<
          }
       }
    Bien entendu, en recherchant sur tout le disque, le résultat se fait attendre mais celà peut être utile.

    Cordialement,

    Dan.

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

Discussions similaires

  1. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  2. Shell: récupérer le bon nom de fichier dans une variable
    Par claralavraie dans le forum Linux
    Réponses: 1
    Dernier message: 10/01/2006, 11h45
  3. stocker les nom de fichiers dans une base
    Par Corben dans le forum Windows
    Réponses: 2
    Dernier message: 04/01/2006, 15h50
  4. Upload et enregistrement du nom du fichier dans une bdd
    Par johan_barbier dans le forum XMLRAD
    Réponses: 8
    Dernier message: 26/09/2005, 12h02
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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