ルートディレクトリとルート内のサブディレクトリから配列内のファイルのリストを取得しようとしています。 C:\
を私のルートディレクトリとみなしてください。私はまた、ファイル名の特定のパターンに従ってC:\abc
とC:\def
のリストを取得したいと思います。ここで私が試したコードです。1つの文字列配列のサブディレクトリにあるファイルを取得するためのネストされたaccept()
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;
}
さて、私は、変数directories
がfinal
することができないことを知っているが、同時に、それはこのメソッドの内部で動作するようにfinal
する必要があります。最終的にC:\
、C:\abc
およびC:\def
のすべてのファイルのリストが、指定されたファイルパターンに従って変数filesList
に返されるように、私のロジックを変更するにはどうすればよいですか?これに関する助けは本当に感謝しています。
注:ディレクトリ内のレベル1の深さを超える必要はありません。たとえば、ディレクトリ内の任意のディレクトリを無視する必要がありますC:\abc
コードフォーマットに問題があったようですが、残念です。 –
私は答えが好きです!それはかなり問題を解決します!ありがとうございました。 :) –