2017-05-18 1 views
-1

패턴으로 시작하는 파일을 Java의 폴더에 병합하는 방법.접두어로 시작하는 파일의 파일 병합

나는 아래와 같은 파일이 있습니다

UW110_file_1.dat

ROW1 DATA1 SOMESTUFF1 
ROW2 DATA2 SOMESTUFF2 

UW110_file_2.dat

ROW3 DATA3 SOMESTUFF3 
ROW4 DATA4 SOMESTUFF4 

UW110_file_2.hdr

ROW3 DATA3 SOMESTUFF3 
ROW4 DATA4 SOMESTUFF4 

확장자가 .dat 인 UW110으로 시작하는 모든 파일을 검사하고 병합해야합니다. 이 경우

내가 파일이있는 위치의 경로와 File 객체를 생성 아래

로 UW110_file

ROW1 DATA1 SOMESTUFF1 
ROW2 DATA2 SOMESTUFF2 
ROW3 DATA3 SOMESTUFF3 
ROW4 DATA4 SOMESTUFF4 
+0

HashTable을 사용하면 파일에서 파일을 구문 분석 할 때 데이터를 고유하게 저장하는 데 도움이됩니다. ROW #을 문자열 키로 사용하고 데이터의 나머지 부분을 값 –

답변

0

을 파일을 만들어야합니다,의는 datFolder

를 호출하자
public String getMergedFiles(File datFolder) { 
    ArrayList<File> files = new ArrayList<>(); 
    files.addAll(Arrays.asList(datFolder.listFiles((f) -> f.getName().endsWith(".dat") && f.getName().startsWith("UW110")))); 

    StringBuilder sb = new StringBuilder(); 

    for (File datFile : files) { 
     InputStream is = new FileInputStream(datFile); 
     BufferedReader buf = new BufferedReader(new InputStreamReader(is)); 

     String line = buf.readLine(); 
     while(line != null) { 
      sb.append(line).append("\n"); 
      line = buf.readLine(); 
     } 

     buf.close(); 
     is.close(); 
    } 

    return sb.toString(); 
} 

public void writeToFile(String input, File file) { 
    PrintWriter out = new PrintWriter(file); 
    try{ 
     out.println(input); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    out.close(); 
} 

// Somewhere in your code 
File folder = new File("myFolder"); 
writeToFile(getMergedFiles(folder), new File("outputFile.dat")); 

이것은 람다를 사용합니다. ja를 사용하지 않는 경우 어떻게 작동하는지보세요. va 8은 루프로 쉽게 돌릴 수 있어야합니다.

이 코드를 테스트하지 않았지만 작동해야한다고 생각합니다. 그렇지 않다면, 아마도 빠른 수정을해야합니다.

이 메서드가 반환하는 문자열을 파일에 간단하게 쓸 수 있으며 최종 파일을 가져야합니다!

Enjoy :

+0

으로 사용하면 파일을 함께 추가하고 출력을 정렬하지 않으며 독창성을 보장하지 않습니다. –

+0

작성자가 요구 한 것과 정확히 일치하지 않습니까? 그리고 그는 "java에있는 파일에 쓰는 법"을 찾아서 반환 된 문자열을 단순히 파일에 쓰는 것이 현명한 것이라고 확신합니다. – 086

+0

그는 위의 예제에서 병합하는 방법을 묻습니다. 이 질문에 UW110_file 같은 파일을 출력하지 않을 것입니다 –

관련 문제