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 :

chercher un fichier dans une arborescence


Sujet :

Entrée/Sortie Java

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut chercher un fichier dans une arborescence
    Bonjour

    J'aimerais parcourir un répertoire et ses sous répertoires pour chercher si le fichier toto.xxx existe et si oui, le mettre sur un lien que je pourrais cliquer pour le télécharger. le répertoire se trouve dans un serveur unix.

    J'ai l'intention d'utiliser le fraguement de code suivant que j'ai modifié légerment mais il donne des erreurs. Est-ce que quelqu'un peut l'essayer sur sa machine.

    Merci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public String button1_action() {
           File C = new File("\usr");
           String fichier_chercher ="toto.csh";
           listeRepertoire(C, fichier_chercher);
            return null;
        }
     
        private List listFiles = new ArrayList();
     
     
        public List getListFiles() {
            return listFiles;
        }
    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
    private void listeRepertoire(File repertoire, String fichier_chercher){
            if (repertoire.isDirectory()){
                File[] list = repertoire.listFiles();
                for (int i = 0; i<list.length; i++){
                    // Appel récursif sur les sous-répertoires
                    File file = list[i];
                    if (file.isDirectory()) {
                        listeRepertoire(file); 
     
                    } else {
                        Option option = new Option(file, file.getAbsolutePath());
                        listFiles.add(option.getValue());
                        String chaine = "<a href="http://localhost:xxxx/" target="_blank">http://localhost:xxxx/</a>";
                        if fichier_chercher.equals(option.getValue()){
                             hyperlink1.setUrl(chaine + fichier_chercher );}
                    }
                }
     
            }

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Quels sont les messages d'erreurs que cela te donne ?

    Cette ligne me parait plus que douteuse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chaine = "<a href="http://localhost:xxxx/" target="_blank">http://localhost:xxxx/</a>";
    Je trouve tres etonant que ton compilateur Java l'accepte !!!

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    De même, cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (file.isDirectory()) {
                        listeRepertoire(file); 
     
                    }
    doit poser problème puisque cette méthode attend un deuxième paramètre

    Et la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if fichier_chercher.equals(option.getValue()){
    Il manque la parenthèse ouvrante.

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par willoi
    Quels sont les messages d'erreurs que cela te donne ?

    Cette ligne me parait plus que douteuse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chaine = "<a href="http://localhost:xxxx/" target="_blank">http://localhost:xxxx/</a>";
    Je trouve tres etonant que ton compilateur Java l'accepte !!!
    Non non, il faut lire juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "http://localhost:xxxx/
    c'est l'éditeur du Forum qui fait ca dès fois.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Le problème c'est que tu n'as pas mis les '\' devant les '"' tu aurais du mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chaine = "<a href=\"http://localhost:xxxx/\" target=\"_blank\">http://localhost:xxxx/</a>";

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par gailuris
    De même, cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (file.isDirectory()) {
                        listeRepertoire(file); 
     
                    }
    doit poser problème puisque cette méthode attend un deuxième paramètre
    oui effectivement il manque un paramètre. J'ai du coller/paster le code avant le changement. mais il reste des erreurs parreils.

    Peux- tu l'essayer sur ta machine, parce que ici c'est difficile de tester souvent à cause de l'environnement. tu peux le tester sur un un répertoire sious windows. (au lieu de /usr on peut écrire c:\\...)
    Citation Envoyé par gailuris
    Et la :
    [code]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if fichier_chercher.equals(option.getValue()){[/
    code]

    Il manque la parenthèse ouvrante.
    ici je vois deux parenthèses ouvrante et 2 fermantes.
    on peut parcontre rajouter deux parenthèses comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (fichier_chercher.equals(option.getValue() ) ) {

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par gailuris
    Le problème c'est que tu n'as pas mis les '\' devant les '"' tu aurais du mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chaine = "<a href=\"http://localhost:xxxx/\" target=\"_blank\">http://localhost:xxxx/</a>";
    oui tu as raison, c'est pour annuler l'effet du link. la prochaione fois.

    mais penses tu qu'il y aurait un code plus simple que celui-là et plus performant aussi.

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par diamonds
    (...)
    ici je vois deux parenthèses ouvrante et 2 fermantes.
    Au temps pour moi... Par contre (pour avoir le dernier mot ) en java les parenthèse autour d'un if sont oligatoire :
    Il faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(condition) {
      // ...
    }
    et non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if condition {
      // ...
    }

    Je teste ton code tout de suite...

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Ce code la :
    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
    	public String button1_action() {
    		File C = new File("c:\\temp\\");
    		String fichier_chercher = "toto.txt";
    		listeRepertoire(C, fichier_chercher);
    		return null;
    	}
     
    	private void listeRepertoire(File repertoire, String fichier_chercher) {
    		if (repertoire.isDirectory()) {
    			File[] list = repertoire.listFiles();
    			for (int i = 0; i < list.length; i++) {
    				// Appel récursif sur les sous-répertoires
    				File file = list[i];
    				if (file.isDirectory()) {
    					listeRepertoire(file, fichier_chercher);
    				} else {
    					if (fichier_chercher.equals(file.getName())) {
    						System.out.println("fichier trouvé " + file.getAbsolutePath());
    					}
    				}
    			}
    		}
    	}
    Compile et fontionne :
    Sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier trouvé c:\temp\test\toto.txt

  10. #10
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par diamonds

    Peux- tu l'essayer sur ta machine, parce que ici c'est difficile de tester souvent à cause de l'environnement. tu peux le tester sur un un répertoire sious windows. (au lieu de /usr on peut écrire c:\\...)
    Tu programme en Java et tu n'as pas de jdk installe !!!

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par willoi
    Tu programme en Java et tu n'as pas de jdk installe !!!
    non, c'est moi qui n'est pas toujours installé devant la machine

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File C = new File("\usr");
    ne serait-elle pas mal interprétée ? Ne serait-ce pas plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File C = new File("\\usr");
    ?
    Pensez au tag quand votre problème est réglé !

  13. #13
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par diamonds
    non, c'est moi qui n'est pas toujours installé devant la machine
    Pffff....

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par gailuris
    Ce code la :
    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
        public String button1_action() {
            File C = new File("c:\\temp\\");
            String fichier_chercher = "toto.txt";
            listeRepertoire(C, fichier_chercher);
            return null;
        }
     
        private void listeRepertoire(File repertoire, String fichier_chercher) {
            if (repertoire.isDirectory()) {
                File[] list = repertoire.listFiles();
                for (int i = 0; i < list.length; i++) {
                    // Appel récursif sur les sous-répertoires
                    File file = list[i];
                    if (file.isDirectory()) {
                        listeRepertoire(file, fichier_chercher);
                    } else {
                        if (fichier_chercher.equals(file.getName())) {
                            System.out.println("fichier trouvé " + file.getAbsolutePath());
                        }
                    }
                }
            }
        }
    Compile et fontionne :
    Sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier trouvé c:\temp\test\toto.txt
    Salut
    Ce code fonctionne très bien sur windows, mais pas sur Unix.
    Sur unix je l'ai tester une centaine de fois, des fois il marche, et des fois il ne marche pas.

    Voici le code du bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String fichier = "nothing"; 
        public String button1_action() {
           String valeur_retour = "";
           File C = new File("//usr//rep1//");
           String fichier_chercher = "toto.txt"; 
           fichier = listeRepertoire(C, fichier_chercher);
           return null;
        }

    et voici la méthode que j'utilise sur unix.

    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
     
    private String listeRepertoire(File repertoire, String fichier_chercher) {
     
                if (repertoire.isDirectory()) {
       File[] list = repertoire.listFiles();
       for (int i = 0; i < list.length; i++) {
        // Appel récursif sur les sous-répertoires
        File file = list[i];
        if (file.isDirectory()) {
         listeRepertoire(file, fichier_chercher);
        } else {
         if (fichier_chercher.equals(file.getName())) {
           textField2.setValue("fichier trouvé (file.getAbsolutePath)" + file.getAbsolutePath());
         fichier = file.getAbsolutePath();
          }
     
        }
       }
      }
                    return(fichier);
     }
    Le propriétaire de l'original de ce code l'avait mentionné ici dans le deuxième item.
    http://java.developpez.com/faq/java/...scence_fichier

  15. #15
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par diamonds
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File C = new File("//usr//rep1//");
    Déjà, corrige ça en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File C = new File("/usr/rep1/");
    Il faut doubler les "\" pas les "/".

  16. #16
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par gailuris
    Déjà, corrige ça en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File C = new File("/usr/rep1/");
    Il faut doubler les "\" pas les "/".
    je l'ai fait et ça change rien. il me reste pas long pour taper ma tête sur le clavier

Discussions similaires

  1. [BATCH]script pour encoder des fichiers dans une arborescence
    Par ashgan44 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 11/05/2009, 15h04
  2. Réponses: 1
    Dernier message: 09/12/2008, 12h23
  3. [batch file] detruire des fichiers dans une arborescence
    Par Biosox dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 03/06/2008, 10h10
  4. Compter le nombre de fichiers dans une arborescence
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 22/08/2007, 10h29
  5. Récupération de fichiers dans une arborescence
    Par bibilolo2 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 04/05/2007, 22h19

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