Maison  >  Questions et réponses  >  le corps du texte

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

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

黄舟黄舟2717 Il y a quelques jours544

répondre à tous(5)je répondrai

  • 伊谢尔伦

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

    1. Diviser d'abord en plusieurs fichiers

    2. Plusieurs threads exploitent plusieurs fichiers pour éviter que deux threads n'exploitent le même fichier

    3. Lire les fichiers ligne par ligne et écrire de nouveaux fichiers ligne par ligne

    4. Fusionner tous les fichiers

    1,4 Utilisez simplement les commandes Linux~

    répondre
    0
  • 怪我咯

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

    Fichier file = new File(filepath);
    BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),510241024);
    String line = "";
    while((line = reader .readLine()) != null){

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

    }

    répondre
    0
  • 迷茫

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

    Afin d'améliorer les performances, vous aurez peut-être besoin d'E/S mappées. Pour plus de détails, veuillez vous référer à :

    .
    1. Pourquoi utiliser Memory Mapped File ou MappedByteBuffer en Java

    2. Opérations de lecture et d'écriture de fichiers volumineux Java, MappedByteBuffer de Java Nio, mappage fichier/mémoire efficace

    3. Une comparaison simple des performances de java.io et java.nio

    répondre
    0
  • 天蓬老师

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

    S'il s'agit d'un simple remplacement de texte, utilisez simplement la commande sed de Linux.

    S'il s'agit d'un remplacement de texte plus complexe, voir ci-dessous :

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

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

    répondre
    0
  • 怪我咯

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

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

    répondre
    0
  • Annulerrépondre