84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件
人生最曼妙的风景,竟是内心的淡定与从容!
先分割成多個檔案
多個執行緒操作多個文件,避免兩個執行緒操作同一個文件
按行讀取檔案並按行寫入新的檔案
合併所有文件
1,4用linux指令就可以了~
File file = new File(檔案路徑); BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file)); BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);String line = "";while((line = reader.
}
為了提高效能,你可能需要 mapped IO,具體可以參考:
為何要在Java中使用記憶體映射檔案(Memory Mapped File)或MappedByteBuffer
java大檔案讀寫操作,java nio 之MappedByteBuffer,高效檔案/記憶體映射
java.io和java.nio效能簡單比較
如果是簡單文字的替換,用linux的sed指令就行了。
如果是比較複雜的文字替換,看下面:
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
用spark分析、lines=sc.textFile("your_file");filterlines=lines.filter(your_filter_function)filterlines.xxx()
先分割成多個檔案
多個執行緒操作多個文件,避免兩個執行緒操作同一個文件
按行讀取檔案並按行寫入新的檔案
合併所有文件
1,4用linux指令就可以了~
File file = new File(檔案路徑);
雷雷BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);
String line = "";
while((line = reader.
}
為了提高效能,你可能需要 mapped IO,具體可以參考:
為何要在Java中使用記憶體映射檔案(Memory Mapped File)或MappedByteBuffer
java大檔案讀寫操作,java nio 之MappedByteBuffer,高效檔案/記憶體映射
java.io和java.nio效能簡單比較
如果是簡單文字的替換,用linux的sed指令就行了。
如果是比較複雜的文字替換,看下面:
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
用spark分析、
lines=sc.textFile("your_file");
filterlines=lines.filter(your_filter_function)
filterlines.xxx()