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 :

performance sur le parcours d'une arborescence


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Par défaut performance sur le parcours d'une arborescence
    Bonjour,

    Je cherche à récupérer seulement les fichiers "toto.xml" dans un répertoire assez volumineu. Pour cela j'utilise le code ci-dessous mais c'est beaucoup trop lent pour mon application vu la taille de mon répertoire où j'effectue les recherches.
    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 static void ListingToto ( File dirToto, ArrayList  arrayToto) 
    	{		
            if (dirToto.getName().contains("toto"))
            {
            	arrayToto.add(dirToto.getAbsolutePath());
            }
     
            if ( dirToto.isDirectory ( ) ) 
            {
                File[] list = dirToto.listFiles();
                if (list != null)
                {
                    for ( int i = 0; i < list.length; i++) 
                    {
                        // recursive call
                    	ListingToto(list[i], arrayToto);	                	
                    } 
                } 
            }
    	}
    Connaissez vous un moyen plus rapide pour effectuer cette recherche?
    merci

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Pour optimiser j'utiliserais des FileFilter... Le problème là c'est que tu fais un appel à la méthode en récursif par fichier quoi qu'il arrive, donc super consommateur ...
    J'essaye de te pondre ça dans les minutes qui suivent ...

    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
     
    public MaClasse {
     
      public static final FileFilter dirFileFilter = new FileFilter(){
        public boolean accept(File f){
          return f.isDirectory();
        }
      }
     
      public static void filteredListing(File file, ArrayList list, FileFilter filter){
        File[] newFiles = file.listFiles(filter);
        for (int i=0;i<newFiles.length;i++)
          list.add(newFiles[i].getAbsolutePath());
        File[] subDirectories = file.listFiles(dirFileFilter);
        for (int i=0;i<subDirectories.length;i++)
          filteredListing(subDirectories[i],list,filter);
        }
      }
    }
    et l'appel se fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MaClass.filteredListing(fichier,maListe,new FileFilter(){
    public boolean accept(File f){
          return f.getName().contains("toto");
        }
    });
    Je n'ai pas utilisé de syntaxe non compatible avec java 1.4

    Attention aux conventions de nommage

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Tu peux regarder chez Apache comment ils ont fait pour les commons:
    http://jakarta.apache.org/commons/io....IOFileFilter)

Discussions similaires

  1. Fonction récursive sur le parcours d'une arborescence
    Par MINNIEandMICKEY dans le forum Général Java
    Réponses: 4
    Dernier message: 24/12/2014, 10h34
  2. Réponses: 1
    Dernier message: 26/10/2009, 15h05
  3. Parcours d'une arborescence sans repasser par un meme fichier
    Par JMLLB dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/06/2009, 16h04
  4. Réponses: 3
    Dernier message: 26/12/2006, 11h34
  5. [VBA-A]Parcours d'une arborescence dossiers et fichiers
    Par sidneyvba dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2006, 16h58

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