Ich versuche, die Liste der Dateien in einem Array aus einem Stammverzeichnis und den Unterverzeichnissen innerhalb des Stammverzeichnisses zu erhalten. Betrachte C:\
als mein Root-Verzeichnis. Ich möchte auch die Liste von C:\abc
und C:\def
nach einem bestimmten Muster von Dateinamen erhalten. Hier ist der Code, den ich ausprobiert habe.Nested accept(), um Dateien im Unterverzeichnis in einem String-Array zu erhalten
public String[] getFilesList(File path){
String[] filesList = null;
final String[] directories = null;
try {
properties.load(new StoricoPV_ISAU().getFile());
} catch (IOException e) {
log.error(e.getMessage());
e.printStackTrace();
}
filesList = path.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
if(name.matches(Constants.INTERNA_REGEX)){
return true;
}else if(name.matches(Constants.SISS_REGEX)){
return true;
}else if(new File(properties.getProperty(Constants.PATH_NAME)+name).isDirectory()){
//error here: The final local variable directories cannot be assigned, since it is defined in an enclosing type
directories = new File(properties.getProperty(Constants.PATH_NAME)).list(new FilenameFilter() {
public boolean accept(File dir, String name) {
if(name.matches(Constants.INTERNA_REGEX)){
return true;
}else if(name.matches(Constants.SISS_REGEX)){
return true;
}else{
log.info("Invalid file or directory: "+name);
return false;
}
}
});
return false;
}
return false;
}
});
return filesList;
}
Okay, ich weiß, dass die Variable directories
nicht final
sein kann, aber zur gleichen Zeit, muss es final
sein innerhalb dieser Methode zu arbeiten. Wie kann ich meine Logik ändern, so dass schließlich die Liste aller Dateien in C:\
, C:\abc
und C:\def
in der Variablen filesList
entsprechend dem angegebenen Dateimuster zurückgegeben wird. Jede Hilfe dazu wäre sehr geschätzt.
HINWEIS: Ich brauche nicht über Level 1 Tiefe im Verzeichnis zu bekommen. Zum Beispiel müssen wir jedes Verzeichnis innerhalb des Directories ignorieren C:\abc
Es schien, dass das Code-Format ein Problem hatte, tut mir leid. –
Ich mag die Antwort! Es löst das Problem ziemlich gut! Vielen Dank. :) –