java如何高效读写10G以上大文件
黄舟
黄舟 2017-04-18 10:52:01
0
5
630

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(5)
伊谢尔伦
  1. まず複数のファイルに分割してください

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

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

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

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

いいねを押す +0
刘奇

ファイル 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
迷茫

パフォーマンスを向上させるために、マッピングされた IO が必要になる場合があります。詳細については、以下を参照してください。

  1. Java で Memory Mapped File または MappedByteBuffer を使用する理由

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

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

いいねを押す +0
Peter_Zhu

単純なテキストの置換であれば、Linuxのsedコマンドを使用するだけです。

より複雑なテキスト置換の場合は、以下を参照してください:

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

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

いいねを押す +0
刘奇

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート