Les codes suivants parcourent tous les répertoires et sous-répertoires et sortent uniquement les fichiers .java;lire les fichiers du répertoire et des fichiers de filtre à partir de Java
import java.io.File;
public class DirectoryReader {
private static String extension = "none";
private static String fileName;
public static void main(String[] args){
String dir = "C:/tmp";
File aFile = new File(dir);
ReadDirectory(aFile);
}
private static void ReadDirectory(File aFile) {
File[] listOfFiles = aFile.listFiles();
if (aFile.isDirectory()) {
listOfFiles = aFile.listFiles();
if(listOfFiles!=null) {
for(int i=0; i < listOfFiles.length; i++ ) {
if (listOfFiles[i].isFile()) {
fileName = listOfFiles[i].toString();
int dotPos = fileName.lastIndexOf(".");
if (dotPos > 0) {
extension = fileName.substring(dotPos);
}
if (extension.equals(".java")) {
System.out.println("FILE:" + listOfFiles[i]);
}
}
if(listOfFiles[i].isDirectory()) {
ReadDirectory(listOfFiles[i]);
}
}
}
}
}
}
Est-ce efficace? Que pourrait-on faire pour augmenter la vitesse?
Toutes les idées sont les bienvenues.
Il y a un bug: les fichiers sans extension seront traités comme s'ils avaient la dernière extension vue par le programme. Pas besoin d'appeler listFiles deux fois. Utilisez .getPath() et pas .toString() pour obtenir le chemin du fichier (même résultat, meilleure lisibilité) – unbeli
@unbeli merci. – Adnan