2013-04-15 2 views
1

DirectoryWalker를 사용 중이고 XML 파일이 들어있는 모든 디렉토리를 나열하는 필터를 만들고 싶습니다. 파일 자체를 나열하는 것이 아니라 직접적인 부모 만 나열하고 싶습니까? 디렉토리 만 디렉토리가 있다면 그 디렉토리를 나열하고 싶지 않습니다. 당신은 그것이 가능하다고 믿는가?xml 파일이 들어있는 DirectoryWalker 필터 폴더

나는 샘플을 http://people.apache.org/~jochen/commons-io/site/apidocs/org/apache/commons/io/DirectoryWalker.html#filter에서보고 있었지만 내가 원하는 것을 한 것처럼 보이지 않았다.

public class ExtractedDirectoryWalker extends DirectoryWalker { 

public ExtractedDirectoryWalker() { 
    super(); 
} 

public ArrayList<File> getDirectories(File startDirectory) throws IOException { 
    ArrayList<File> dirs = new ArrayList<File>(); 
    walk(startDirectory, dirs); 
    return dirs; 
} 

@Override 
protected boolean handleDirectory(File directory, int depth, 
    Collection results) { 
    results.add(directory); 
    return true; 
} 

} 다른 클래스에서

:

List<File> directories = new ExtractedDirectoryWalker() 
        .getDirectories(outputFolder.toFile()); 

답변

0

내가 코드를 테스트하지 않은,하지만 난이 일을해야한다고 생각 :

private static final FileFilter filter = new XMLChildFileFilter(); 

public ExtractedDirectoryWalker() { 
    super(filter, -1); 
} 
private static class XMLChildFileFilter implements FileFilter { 
    @Override 
    public boolean accept(File file) { 
     if(file == null || !file.isDirectory() || !file.canRead()) { 
      return false; 
     } 
     File[] files = file.listFiles(); 
     for(File f : files) { 
      if(f.isFile()) { 
       if(FilenameUtils.getExtension(f.getName()).equals("xml")) 
        return true; 
      } 
     } 
     return false; 
    } 
} 
관련 문제