名前が「_1.xml」で終わるファイルをフォルダー (UNIX ファイルシステム、/home/myuser/myfolder/ を検索しています) に検索したい。svn フォルダーを避けたい: エラーが発生するかどうかわからないので、避けたいのです。彼らが安全だとあなたが保証してくれるなら、私は彼らのことは気にしません。
私のコードは次のとおりです。
/**
* Searches associated XML file "WHATEVER_id.xml" given an id
*
* @param id
* notam id
*
* @return absolute path to XML file
*
*/
public String getXMLFileFromID(final int id) {
String path = null;
File root;
try {
root = new File("/home/myuser/myfolder");
String[] extensions = {"xml"};
boolean recursive = true;
try{
Collection<File> files = FileUtils.listFiles(root, extensions, recursive);
for(Iterator<File> iterator = files.iterator(); iterator.hasNext(); ){
File file = (File) iterator.next();
if(file.getName().endsWith(Integer.toString(id) + ".xml")){
path = file.getAbsolutePath();
LoggerFactory.getLogger(FTPDatabase.class).info("getXMLFileFromID : Found associated XML file in " + path);
return path;
}
}
}catch(Exception e){
e.printStackTrace();
}
LoggerFactory.getLogger(FTPDatabase.class).info("getXMLFileFromID : Unable to find XML associated to id " + id);
} catch (DatabaseException e) {
LoggerFactory.getLogger(FTPDatabase.class).info("getXMLFileFromID : DatabaseException : " + e.getMessage());
}
return path;
}
また、次のように FilenameFilters を試しました。
File[] matchingFiles = f.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(Integer.toString(id) + ".xml");
}
});
if(matchingFiles.length == 1){
path = matchingFiles[0].getAbsolutePath();
LoggerFactory.getLogger(FTPDatabase.class).info("getXMLFileFromID : Found associated XML file in " + path);
}
else{
LoggerFactory.getLogger(FTPDatabase.class).info("getXMLFileFromID : Unable to find XML associated to NOTAM id " + id);
}
とにかく例外が発生しています:
java.lang.IllegalArgumentException: Parameter 'directory' is not a directoy,
at org.apache.commons.io.FileUtils.validateListFileParameters (545)
at org.apache.commons.io.FileUtils.listFiles(521)
at org.apache.commons.io.FileUtils.listFiles(691)
at com.core.ftp.FTPDataBase.getXMLFileFromID(227) (that's the FileUtils.listFiles
line)
...
何か助けはありますか?