2012-03-03 2 views
0

그래서 프로젝트에는 2 개의 디렉토리 구조가 있습니다. 이 디렉토리는 서로 다른 두 위치에 있으며 각 디렉토리 구조와 파일 내용은 동일합니다 (파일의 내용 만 다릅니다).비슷한 디렉토리 구조를 반복하는 가장 쉬운 방법은 무엇입니까?

이제는이 두 개의 디렉토리 트리를 통해 그들이 포함하는 파일의 "콤보"를 만들고 싶습니다.

명확성을위한 예; 두 디렉토리 트리는 다음과 같습니다.

directory1 
    directory2 
     file1 
     file2 
    file3 
    file4 

이제 두 디렉토리 트리의 file1 File 인스턴스를 모두 일치 시키려고합니다.

java File 클래스를 사용하면 해당 내용의 File [] 배열 만 만들 수 있습니다. 일치하는 File 인스턴스를 찾기 위해 반환하는 목록을 반복해야합니까? 아니면 더 나은 방법을 사용할 수 있습니까? 당신이 제 3 자 항아리를 사용하고자하는 경우

+0

'combos'를 만들고'파일 인스턴스 '를 찾음으로써 무엇을 의미합니까? – John

+0

@ 존 : 기본적으로 이름이 일치하는 파일을 찾습니다. 한 디렉토리에 "foo.txt"와 같은 파일이있는 경우 다른 디렉토리 트리에서 "동일한"위치 (예 : 두 디렉토리 트리의 루트와 같은 상대 경로)에 일치하는 foo.txt를 찾고 싶습니다. – Bartvbl

+0

확인. 바보 나. File 클래스에서 listFiles() 호출을 수행하면 두 디렉토리 트리가 모두 같기 때문에 두 디렉토리에서 동일한 목록을 얻을 수 있습니다. – Bartvbl

답변

0

난 그냥 그것을 해결하는 방법을 여기에 적어 것 :

public static File[] getDirectoryList(File file) { 
    File[] files = file.listFiles(new FileFilter() { 
     public boolean accept(File file) { 
      return file.isDirectory(); 
     } 
    }); 
    return files; 
} 

여기에이 코드는 파일 istance의 모든 하위 디렉토리를 가져옵니다. 두 디렉토리 트리가 동일하기 때문에 리턴 된 File [] 목록은 파일 트리의 해당 2 File Intances에 대해 동일합니다.

대신 디렉토리에 포함 된 모든 파일을 갖고 싶다면 "return file.isDirectory();"줄을 변경하십시오. "return file.isFile();".

+0

이것은 결국 사용하는 방법입니다. 아파치도 확실히 가치가있다. – Bartvbl

1

,이 제안 :
http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
그렇지 않으면, 당신은 재귀 적 폴더에 반복하는 자신 만의 방법을 작성해야합니다.

+0

hm. 나는 사람들이 아파치 항목을 참조하는 것을 종종 만난다. 지금은 일반 자바 라이브러리를 사용하여 알아 냈지만 어쨌든 답변 주셔서 감사합니다. 아마 어떤 점에서 아파치 항목을 체크 아웃 할 것입니다 :) – Bartvbl

관련 문제