2011-02-25 6 views
3

Java에서 디렉토리를 지정할 수있는 Java의 방법이 있으며 전체 파일을 하나씩 읽습니다.폴더의 전체 파일 읽기

그렇지 않으면 Java에서 정규 표현식 파일을 읽는 방법이 있습니까? 그렇다면 모든 gh001_12312 gh002_12312, gh003_12911, gh004_22222, gh005_xxxxx로 시작하는 폴더의 모든 파일 등

+1

앤드류 톰슨이 배열을 반복하고 (br.readLine()없이) 하나의 이동에 파일 읽기 java.nio API를 사용합니다. –

+0

때로는 이전에 몰랐던 몇 가지 기능이 있습니다.하지만 다른 기능은 – aherlambang

+0

에 동의합니다. 개인적으로 필자는 @Pangea가 언급 한 API에 대해 잘 알지 못했고 매우 재미 있다고 생각했습니다. –

답변

5

표준 자바 라이브러리 File#listFiles 통해 디렉토리에 File 요소들의 어레이를 얻는 방법을 제공한다. 기본적 :

File theDirectory = new File("/home/example"); 
File[] children = theDirectory.listFiles(); 

는 또한리스트에 리턴 요소 치기 위해 사용될 수있는 필터가 지정 될 수있게하는 오버 방법이있다.

File theDirectory = new File("/home/example"); 
File[] children = theDirectory.listFiles(new FileFilter(){ 
    public boolean accept(File file) { 
     if (file.isFile()) { 
      //Check other conditions 
      return true; 
     } 
     return false; 
    } 
}); 

당신은 파일 이름에 따라 약간의 필터링을 수행 할 경우

뿐만 아니라 다음 String, PatternMatcher를 보라. 특정 이름 지정 규칙을 따르는 파일 또는 파일 만있을 것이라는 것을 알고있는 경우 파일 이름을 나타내는 문자열 만 제공하는 File.listFiles(FilenameFilter) 옵션도 있습니다.

+0

에는 행 단위로 입력해야하는 input.readLine()을 수행하는 대신 BufferedReader를 전체 문자열로 읽는 방법이 있습니까? – aherlambang

+0

@EquinoX, 내가 아는 것은 아닙니다. –

3

당신은 commons-io에서 아래 방법의 조합을 사용할 수 있습니다. 첫 번째 방법은 특정 확장자와 일치하는 반복적으로 디렉토리의 모든 파일을 반복하는 옵션을 제공합니다 (직접 필터를 제공 할 수있는 또 다른 오버로드 된 메서드가 있음). 두 번째 메서드는 파일의 전체 내용을 String 객체로 읽습니다.

Iterator<File> iterateFiles(File directory, 
              String[] extensions, 
              boolean recursive) 
String readFileToString(File file) 
           throws IOException 
+1

내가 그 commons-io를 사용하고 싶지 않다면 – aherlambang

+0

File (isDirectory(), listFiles()), FileNameFilter 및 BufferedReader의 도움을 받아이 작업을 수행 할 수도 있습니다. /www.exampledepot.com/egs/java.io/GetFiles.html –

1

여기 @ 팀 벤더에서 코드를 재사용하고 있습니다 :

먼저 @ 팀 벤더 같이 필요한 모든 파일의 목록을 (완전성을 위해 다시 여기에 표시). 제 3 자 라이브러리가 필요 없습니다.

File theDirectory = new File("/home/example"); 
File[] children = theDirectory.listFiles(new FileFilter(){ 
    public boolean accept(File file) { 
     if (file.isFile()) { 
      //Check other conditions 
      return true; 
     } 
     return false; 
    } 
}); 

지금 행동 아주 지껄,

public StringBuilder readReplaceFile(File f) throws Exception 
{ 
    FileInputStream fis = new FileInputStream(f); 
    FileChannel fc = fis.getChannel(); 

    int sz = (int)fc.size(); 
    MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz); 

    CharBuffer cb = decoder.decode(bb); 

    StringBuilder outBuffer = new StringBuilder(cb); 
    fc.close(); 
    return outBuffer; 
} 

희망이 도움