Publié le 14/08/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Lister les fichiers et les dossiers d'un repertoire

Comment lister les fichiers qui sont contenus dans un dossier avec JAVA. Par exemple, lorsque l'on recherche un fichier ou un dossier sur son disque dur, il n'y a pas d'autre solution que de parcourir l'ensemble du contenu de ses dossier pour trouver la ressource recherchée.

Extraire les noms des fichiers d'un répertoire

L'objet File dispose des fonctions List() et ListFiles() pour lister les fichiers et les dossiers d'un répertoire.
DiskFileExplorer est un exemple pour parcourir un répertoire, y compris les sous-dossiers (méthode récursive) pour lister son contenu.

import java.io.File;
 
/**
 * Lister le contenu d'un répertoire
 * http://www.fobec.com/java/964/lister-fichiers-dossiers-repertoire.html
 * @author fobec 2010
 */
public class DiskFileExplorer {
 
    private String initialpath = "";
    private Boolean recursivePath = false;
    public int filecount = 0;
    public int dircount = 0;
 
/**
 * Constructeur
 * @param path chemin du répertoire
 * @param subFolder analyse des sous dossiers
 */
    public DiskFileExplorer(String path, Boolean subFolder) {
        super();
        this.initialpath = path;
        this.recursivePath = subFolder;
    }
 
    public void list() {
        this.listDirectory(this.initialpath);
    }
 
    private void listDirectory(String dir) {
        File file = new File(dir);
        File[] files = file.listFiles();
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                if (files[i].isDirectory() == true) {
                    System.out.println("Dossier: " + files[i].getAbsolutePath());
                    this.dircount++;
                } else {
                    System.out.println("  Fichier: " + files[i].getName());
                    this.filecount++;
                }
                if (files[i].isDirectory() == true && this.recursivePath == true) {
                    this.listDirectory(files[i].getAbsolutePath());
                }
            }
        }
    }    
}

Lister l'arborescence d'un dossier

Pour illustrer le fonctionnement de la class, nous allons lister le contenu du dossier temp de mon disque dur.
/**
* Exemple : lister les fichiers dans tous les sous-dossiers
* @param args
*/
public static void main(String[] args) {
  String pathToExplore = "C:temp";
  DiskFileExplorer diskFileExplorer = new DiskFileExplorer(pathToExplore, true);
  Long start = System.currentTimeMillis();
  diskFileExplorer.list();
  System.out.println("----------");
  System.out.println("Analyse de " + pathToExplore + " en " + (System.currentTimeMillis() - start) + " mses");
  System.out.println(diskFileExplorer.dircount + " dossiers");
  System.out.println(diskFileExplorer.filecount + " fichiers");
}

Que donne d'analyse du dossier temp
...
Fichier: wdsr0410.dll
Fichier: wdsr0415.dll
Fichier: wdsr0419.dll
Fichier: windirstat.chm
Fichier: windirstat.exe
----------
Analyse de C:temp en 8734 mses
786 dossiers
7164 fichiers


La lecture des résultats du scan nous apprend que la class a parcouru 786 dossiers et a détecté 7164 fichiers en un peu plus de 8 secondes.
Un peu long non ?
Faites le test de supprimer les System.out.println() puis l'arborescence est parcouru en 547 ms toujours pour le même nombre de fichiers et de dossier.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
14/08/2010
Visualisation
vu 17380 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 265 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Axel dans java

merci Neoray pour ce commentaire
Effectivement, l'objet Calendar s'initialise sur l'heure GMT avec TimeZone.getTimeZone("UTC");
Calendar.getInstance(TimeZone.getTimeZone("...

Publié par jadu dans tuto

Et comment met-on en route Xinha lorsque l'extension a été chargée dans Firefox ?????

je n'ai rien trouvé !!!

Publié par Sylvio dans tuto

J'ai découvert récemment ElRTE (couplé à  ElFinder) qui a l'air pas mal.

Publié par Fobec dans tuto

Je ne maitrise pas du tout WordPress ...
un plugin a l'air sympa http://wordpress.org/extend/plugins/scripts-gzip/, en parcourant le code source, j'ai vu des pistes pour integrer Gzip sous WordPre...

Publié par Fred dans tuto

J'suis d'accord avec Do, PHP est deja un moteur de template.
Disons que le moteur de template permet de separer le code de la vue pour les debutants qui ont besoin qu'on leur impose des bornes...