Rumah  >  Soal Jawab  >  teks badan

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

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

黄舟黄舟2765 hari yang lalu580

membalas semua(5)saya akan balas

  • 伊谢尔伦

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

    1. Pisah kepada berbilang fail dahulu

    2. Berbilang utas mengendalikan berbilang fail untuk mengelakkan dua utas mengendalikan fail yang sama

    3. Baca fail baris demi baris dan tulis fail baharu baris demi baris

    4. Gabung semua fail

    1,4 Hanya gunakan arahan linux~

    balas
    0
  • 怪我咯

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

    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){

    //进行替换操作和其他业务    

    }

    balas
    0
  • 迷茫

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

    Untuk meningkatkan prestasi, anda mungkin memerlukan IO yang dipetakan Untuk butiran, sila rujuk:

    1. Mengapa menggunakan Fail Dipetakan Memori atau MappedByteBuffer dalam Java

    2. operasi baca dan tulis fail besar java, MappedByteBuffer java nio, pemetaan fail/memori yang cekap

    3. Perbandingan ringkas prestasi java.io dan java.nio

    balas
    0
  • 天蓬老师

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

    Jika ia adalah penggantian teks yang mudah, hanya gunakan arahan sed Linux.

    Jika ia adalah penggantian teks yang lebih kompleks, lihat di bawah:

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

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

    balas
    0
  • 怪我咯

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

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

    balas
    0
  • Batalbalas