ホームページ  >  に質問  >  本文

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

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

黄舟黄舟2717日前548

全員に返信(5)返信します

  • 伊谢尔伦

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

    1. まず複数のファイルに分割してください

    2. 2つのスレッドが同じファイルを操作することを避けるために、複数のスレッドが複数のファイルを操作します

    3. ファイルを 1 行ずつ読み取り、新しいファイルを 1 行ずつ書き込みます

    4. すべてのファイルを結合

    1,4 Linuxコマンドを使うだけ~

    返事
    0
  • 怪我咯

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

    ファイル file = 新しいファイル(ファイルパス);
    BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
    BufferedReader リーダー = 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 で Memory Mapped File または MappedByteBuffer を使用する理由

    2. Java の大きなファイルの読み取りおよび書き込み操作、Java nio の MappedByteBuffer、効率的なファイル/メモリ マッピング

    3. java.ioとjava.nioのパフォーマンスの簡単な比較

    返事
    0
  • 天蓬老师

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

    単純なテキストの置換であれば、Linuxの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
  • キャンセル返事