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

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

黄舟
黄舟

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

répondre à tous(5)
伊谢尔伦
  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~

刘奇

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

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

}

迷茫

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

Peter_Zhu

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-...

刘奇

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal