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
Vous devez vous connecter pour publier un commentaire.
J'ai juste essayé et ça a fonctionné pour moi. J'ai eu à ajouter un
null
vérifier et changé le répertoire méthode d'évaluation:OriginalL'auteur mprivat
Vous devez mettre à jour votre méthode de recherche comme ceci:
OriginalL'auteur Hakan Serce
Si Java 7 est une option, dans le walkFileTree() la méthode. Il vous permettra de visiter tous les fichiers et répertoires dans un arbre, que vous pouvez commencer à partir de la racine de votre lecteur. Mettre en œuvre une base
FileVisitor
pour traiter les attributs de fichier pour chaquePath
. Vous pouvez commencer ici.OriginalL'auteur Tom G
Si vous utilisez Java SE 7, utiliser le nouveau fichier API:
http://docs.oracle.com/javase/7/docs/api/java/nio/file/FileVisitor.html
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#walkFileTree%28java.nio.file.Path,%20java.util.Set,%20int,%20java.nio.file.FileVisitor%29
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#walkFileTree%28java.nio.file.Path,%20java.nio.file.FileVisitor%29
OriginalL'auteur Puce
Je ne sais pas quelle est l'erreur que vous obtenez, mais j'ai eu un NPE parce que vous n'êtes pas vérifier pour la nulle après la ligne suivante.
Après avoir changé le code comme suit, il semblait bien se passer , j'ai arrêté parce que j'ai beaucoup de fichiers. Je suis en supposant qu'elle va passer à la suivante racine après la première racine(c:/dans mon cas)
importer java.util.ArrayList;
importer java.util.Des tableaux;
classe publique de Recherche {
classe Chercheur {
}
OriginalL'auteur SantoshK