J'ai cette fonction qui imprime le nom de tous les fichiers d'un répertoire de manière récursive. Le problème est que mon code est très lent car il doit accéder à un périphérique réseau distant à chaque itération.
J'ai l'intention de charger d'abord tous les fichiers du répertoire de manière récursive, puis de passer en revue tous les fichiers avec l'expression rationnelle pour filtrer tous les fichiers que je ne veux pas. Quelqu'un a-t-il une meilleure suggestion ?
public static printFnames(String sDir) {
File[] faFiles = new File(sDir).listFiles();
for (File file : faFiles) {
if (file.getName().matches("^(.*?)")) {
System.out.println(file.getAbsolutePath());
}
if (file.isDirectory()) {
printFnames(file.getAbsolutePath());
}
}
}
C'est juste un test, plus tard je ne vais pas utiliser le code comme ça, à la place je vais ajouter le chemin et la date de modification de chaque fichier qui correspond à une regex avancée dans un tableau.
1 votes
... quelle est la question ? Cherchez-vous simplement à valider que ce code fonctionnera ?
0 votes
Non, je sais que ce code fonctionne mais il est très lent et on dirait qu'il est stupide d'accéder au système de fichiers et de récupérer le contenu de chaque sous-répertoire au lieu de tout récupérer en une fois.
1 votes
Duplicata possible de Lister récursivement des fichiers en Java