Parcourir tous les fichiers en Java

Je veux faire de mon programme d'impression énorme liste de tous les fichiers que j'ai sur mon ordinateur. Mon problème est qu'il n'imprime que les fichiers à partir du premier dossier du premier disque dur, quand je veux imprimer tous les fichiers se trouvant sur mon ordinateur. Les idées de ce que je fais mal? Merci.

Voici le code que j'utilise:

Principal:

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        ArrayList<File> roots = new ArrayList();
        roots.addAll(Arrays.asList(File.listRoots()));


        for (File file : roots) {
            new Searcher(file.toString().replace('\\', '/')).search();
        }
    }
}

et moteur de Recherche de classe:

import java.io.File;

public class Searcher {

    private String root;

    public Searcher(String root) {
        this.root = root;
    }

    public void search() {
        System.out.println(root);
        File folder = new File(root);
        File[] listOfFiles = folder.listFiles();
        for (File file : listOfFiles) {
            String path = file.getPath().replace('\\', '/');
            System.out.println(path);
            if (!path.contains(".")) {
                new Searcher(path + "/").search();
            }
        }
    }
}
Bien qu'il existe des doublons de questions (stackoverflow.com/questions/3154488/... et stackoverflow.com/questions/4917326/...), certaines réponses sont notamment Java 7, ce qui n'était pas disponible quand les autres ont été publiées.

OriginalL'auteur Rohit Malish | 2012-05-21