2014-01-10 3 views
2

저는 1 백만 라인 이상의 데이터를 가지고있는 큰 프로젝트를 진행하고 있습니다. 데이터는 각각 20,000 행을 포함하는 다양한 파일로 나뉩니다. 이제 각 파일의 데이터가 한 줄씩 읽히고 일부 변수 x가 각 줄에 연결됩니다. 나는이 배열 된 문자열을 배열리스트에 저장하려고한다. 그런 다음이 배열 목록은 파일을 한 줄씩 출력하도록 저장됩니다.전체 목록을 Java로 파일에 작성하기

각 파일에 3-4 분이 소요됩니다. 어쨌든 하나의 파일에 전체 ArrayList을 쓰는 것이므로 많은 시간이 걸리지 않을 것입니다. 아니면 이것을 수행하는 더 빠른 방법이 있습니까?

List<String> outputData = new ArrayList<String>(); 
//Output arraylist containing concatenated data 

writeLines(File outputFile,outputData); //The data is written to file 

것은 무엇이 작업을 달성하는 가장 빠른 방법이 될 것이다 : 여기

은 몇 가지 예제 코드?

+0

전체 리스프를 통해 반복문을 사용하여 파일에 추가합니다. – Rugal

+0

어떻게 파일 *을 작성하고 있습니까 *? –

+0

writeLines 메소드는 어떻게 생겼습니까? –

답변

5

을 돕는

감사합니다 여러분.

here 설명서와 다양한 writeLines 방법을 참조하십시오.

0

올바른 해결 방법은 ArrayList을 건너 뛰고 파일에 직접 쓸 수 있습니다. 그러나 디스크 IO가 RAM보다 느리다는 것을 고려해야합니다. 이 같은

테스트 : 내 오래된 델 노트북에

Collection<String> list = new ArrayList<String>(); 
    for (int i = 0; i < 1000000; i++) { 
     // just fill something in: 
     list.add("A " + i + " " + new Date() + "!"); 
    } 
    long start = System.nanoTime(); 
    PrintWriter out = new PrintWriter("example.out"); 
    for (String line : list) { 
     out.println(line); 
    } 
    out.close(); 
    long end = System.nanoTime(); 
    System.out.println((end - start)/1000000000D + " sec"); 

인쇄 : 나는 나이를했다 파일을 개별 라인을 작성하는 writeStringtoFile을 사용했다

0.508509454 sec 
+0

응답 해 주셔서 감사합니다.하지만이 솔루션도 사용했습니다. 그러나 속도가 느립니다. 더 빠른 파일 작성 방법이 있습니까? –

+0

회선은 얼마나 걸립니까? 나는 방금 1.000.000 줄의 파일을 생성했으며 1 초도 걸리지 않았습니다. –

0

첫째. 먼저 배열리스트에 모든 라인을 저장하고 writeLines 함수로 전체리스트를 작성하는 것이 문제를 해결 한 것처럼 보입니다. 이제는 단지 2 초 밖에 걸리지 않습니다. 당신은 당신이 한 번에 전체 ArrayList를 작성하는 FileUtils에서 writeLines 방법을 사용할 수 있습니다 ArrayList 준비되면

아마르