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 :

Récupérer liste de fichier


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Récupérer liste de fichier
    Bonjour,

    je début en java, et j'ai besoin de créer un petit utilitaire pour comparer différents dossiers afin de voir les MAJ faites sur des fichiers, bref pour commencer, j'ai entamé de coder une partie qui ouvrirai un dossier et qui me listerai tous les fichiers pour une extension donnée.

    Voici le code, qui me pose problème car j'ai l'erreur suivante:

    java.lang.NoSuchMethodError: main
    Exception in thread "main"

    Et le code:

    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
    public void main(String[] args) {
     
    		String path = "\\SE006\\INFORMATIQUE";
    		File dossier = new File(path);
     
    		System.out.println("me voilà dans le monde du java");
    		ListerFichier(dossier);
    		}
     
    	public void ListerFichier(File repertoire){
     
    		String [] listefichiers;
    		int i;
     
    		listefichiers=repertoire.list();
    		for(i=0;i<listefichiers.length;i++){
    		if(listefichiers[i].endsWith(".jar")==true){
     
    		System.out.println(listefichiers[i].substring(0,listefichiers[i].length()-5));// on choisit la sous chaine - les 5 derniers caracteres ".java"
    		}
    		} 
    	}

    Je débute tout juste et sur eclipse, donc un ide que je ne connais pas trop.

    Donc si je comprends bien, ce code devrait lister tous les fichiers ".jar" du répertoire "path"....mais ca ne fonctionne pas.

    Merci par avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Par défaut
    Bonjour,

    l'erreur indique que la méthode main de ta classe n'est pas trouvée.

    Normal, tu ne l'as pas déclarée en static
    Essayes ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void main(String[] args) {
    		
    		String path = "\\SE006\\INFORMATIQUE";
    		File dossier = new File(path);
    		
    		System.out.println("me voilà dans le monde du java");
    		ListerFichier(dossier);
    		}
    Je n'ai pas regardé la suite, mais si tu as un autre problème, n'hésite pas

    A+

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    je m'en suis rendu compte après

    par contre j'ai du me tromper sur l'utilisation de la classe " File ", puisque maintenant j'ai ces messages d'erreur:

    me voilà dans le monde du java
    Exception in thread "main" java.lang.NullPointerException
    at PMain._main.ListerFichier(_main.java:159)
    at PMain._main.main(_main.java:150)
    Ce que je pense, c'est que cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListerFichier(dossier);
    Pose problème, car je me demande si j'ai bien renseigné le chemin absolu du dossier à ouvrir.
    J'ai comme l'impression qu'il ne fallait pas donner la variable path au moment d'instancier mon objet.

  4. #4
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Une solution, définir une classe de filte :

    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
    import java.io.File;
    import java.io.FilenameFilter;
    import java.util.regex.Pattern;
     
    public class Filtre implements FilenameFilter {
     
        private final Pattern pattern;
     
        public Filtre(String fileMask) {
            this.pattern = Pattern.compile(fileMask);
        }
     
        public boolean accept(File dir, String name) {
            return this.pattern.matcher(name).matches();
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static void ListerFichier(File repertoire){
             // On ne conserve que les fichiers .jar (utilisation des REGEXP dans le filtre)
            String [] listefichiers = repertoire.list(new Filtre("^.*\\.jar$"));
            if(listefichiers!=null){
                    for(String fichier : listefichiers){
                          // On ne conserve dans la chaine de caractère que ce qui se trouve avant le dernier .
                          System.out.println(fichier.substring(0, fichier.lastIndexOf('.')));
                    }
            }
    }
    Ton chemin est bizarre aussi, il faut que tu mettes le chemin entier à partir de la racine...

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    la ou je me trompe, je pense c'est dans la déclaration de File repertoire...

    Merci pour ton filtre, j'essaierai après, par contre je ne vois pas trop comment faire pour ce File.

    Edit: Pour le chemin, au départ j'avais mis : "C:\windows", mais avec les histoires de backslash qui sont mal interprétés apparement, j'ai mis un chemin réseau vers un de mes serveurs, mais j'ai du mettre des double backslash, sinon il ne voulait pas de backslash simple.

  6. #6
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Tu te chopes la NullpointerException après le repertoire.list(); à mon avis. list() renvoi null si il n'y a pas de repertoire/fichier sur le chemin que tu as spécifié.

    Sous windows, ton chemin doit ressembler à un truc du genre c:\\windows

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Merci pour votre aide, j'ai réussi en cherchant encore, à trouver mon erreur, les problèmes venant du chemin d'accès au dossier repertoire.

    Il ne faut pas utiliser de backslash, mais de simple slash suffisent.

    pour info http://java.developpez.com/sources/?page=fluxFichiers


  8. #8
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par Freud44 Voir le message
    Il ne faut pas utiliser de backslash, mais de simple slash suffisent.
    Les 2 marches, c'est juste que le \ étant un caractère spécial, il faut le doubler pour qu'il soit bien interprété comme étant le caractère \
    Bref

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    après vois tu le problème du backslash, s'il faut le doubler, c'est que pour des chemins d'accès réseau, comme j'avais essayé, bah ca ne marche pas forcément, étant donné que tu dois taper forcément 2 backslash avant le nom d'hote...enfin bon!

    la maintenant, mon but est d'afficher un listing complet de ces fichiers récupérés, et de les comparer à un autre dossier...

    Etant sous eclipse, as tu des pistes à me donner concernant les composants qui pourraient me permettre d'afficher cette liste de fichiers?

    aussi, peut on séparer dans un affichage les dossiers des fichiers, cad que je veux récupérer le nom du fichier, ainsi que son dossier conteneur.

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

Discussions similaires

  1. Récupérer liste de fichiers dans un exporateur
    Par JackJnr dans le forum Android
    Réponses: 0
    Dernier message: 04/10/2014, 19h57
  2. Réponses: 12
    Dernier message: 11/05/2012, 11h17
  3. Récupérer liste de fichier
    Par majo59 dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/01/2010, 08h33
  4. Réponses: 10
    Dernier message: 30/01/2005, 20h53

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