찾다

 >  Q&A  >  본문

java如何高效读写10G以上大文件

有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件

黄舟黄舟2803일 전625

모든 응답(5)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:54:01

    1. 먼저 여러 파일로 분할

    2. 두 스레드가 동일한 파일을 작업하는 것을 방지하기 위해 여러 스레드가 여러 파일을 작업합니다

    3. 파일을 한 줄씩 읽고 새 파일을 한 줄씩 씁니다

    4. 모든 파일 병합

    1,4 그냥 리눅스 명령어를 사용하세요~

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:54:01

    파일 파일 = 새 파일(파일 경로);
    BufferedInputStream fis = new BufferedInputStream(new FileInputStream(파일));
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);
    String line = "";
    while((line = reader .readLine()) != null){

    으아아아

    }

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 10:54:01

    성능 향상을 위해 매핑된 IO가 필요할 수 있습니다. 자세한 내용은

    을 참조하세요.
    1. Java에서 메모리 매핑 파일 또는 MappedByteBuffer를 사용하는 이유

    2. java 대용량 파일 읽기 및 쓰기 작업, java nio의 MappedByteBuffer, 효율적인 파일/메모리 매핑

    3. java.io와 java.nio의 성능 단순 비교

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:54:01

    간단한 텍스트 교체라면 리눅스의 sed 명령어를 사용하면 됩니다.

    텍스트 교체가 더 복잡한 경우 아래를 참조하세요.

    1. http://stackoverflow.com/ques...

    2. http://www.baeldung.com/java-...

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:54:01

    사용spark分析、
    lines=sc.textFile("your_file");
    filterlines=lines.filter(your_filter_function)
    filterlines.xxx()

    회신하다
    0
  • 취소회신하다