有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件
人生最曼妙的风景,竟是内心的淡定与从容!
Pisah kepada berbilang fail dahulu
Berbilang utas mengendalikan berbilang fail untuk mengelakkan dua utas mengendalikan fail yang sama
Baca fail baris demi baris dan tulis fail baharu baris demi baris
Gabung semua fail
1,4 Hanya gunakan arahan linux~
Fail fail = Fail baharu(laluan fail); BufferedInputStream fis = BufferedInputStream baharu(FailInputStream(fail) baharu); Pembaca BufferedReader = BufferedReader baharu(InputStreamReader baharu(fis,"utf-8"),510241024);Baris rentetan = "";sementara((baris = pembaca .readLine()) != null){
//进行替换操作和其他业务
}
Untuk meningkatkan prestasi, anda mungkin memerlukan IO yang dipetakan Untuk butiran, sila rujuk:
Mengapa menggunakan Fail Dipetakan Memori atau MappedByteBuffer dalam Java
operasi baca dan tulis fail besar java, MappedByteBuffer java nio, pemetaan fail/memori yang cekap
Perbandingan ringkas prestasi java.io dan java.nio
Jika ia adalah penggantian teks yang mudah, hanya gunakan arahan sed Linux.
Jika ia adalah penggantian teks yang lebih kompleks, lihat di bawah:
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
用spark分析、lines=sc.textFile("your_file");filterlines=lines.filter(your_filter_function)filterlines.xxx()
Pisah kepada berbilang fail dahulu
Berbilang utas mengendalikan berbilang fail untuk mengelakkan dua utas mengendalikan fail yang sama
Baca fail baris demi baris dan tulis fail baharu baris demi baris
Gabung semua fail
1,4 Hanya gunakan arahan linux~
Fail fail = Fail baharu(laluan fail);
BufferedInputStream fis = BufferedInputStream baharu(FailInputStream(fail) baharu);
Pembaca BufferedReader = BufferedReader baharu(InputStreamReader baharu(fis,"utf-8"),510241024);
Baris rentetan = "";
sementara((baris = pembaca .readLine()) != null){
}
Untuk meningkatkan prestasi, anda mungkin memerlukan IO yang dipetakan Untuk butiran, sila rujuk:
Mengapa menggunakan Fail Dipetakan Memori atau MappedByteBuffer dalam Java
operasi baca dan tulis fail besar java, MappedByteBuffer java nio, pemetaan fail/memori yang cekap
Perbandingan ringkas prestasi java.io dan java.nio
Jika ia adalah penggantian teks yang mudah, hanya gunakan arahan sed Linux.
Jika ia adalah penggantian teks yang lebih kompleks, lihat di bawah:
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
用spark分析、
lines=sc.textFile("your_file");
filterlines=lines.filter(your_filter_function)
filterlines.xxx()