Maison > Questions et réponses > le corps du texte
有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件
伊谢尔伦2017-04-18 10:54:01
Diviser d'abord en plusieurs fichiers
Plusieurs threads exploitent plusieurs fichiers pour éviter que deux threads n'exploitent le même fichier
Lire les fichiers ligne par ligne et écrire de nouveaux fichiers ligne par ligne
Fusionner tous les fichiers
1,4 Utilisez simplement les commandes Linux~
怪我咯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){
//进行替换操作和其他业务
}
迷茫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 à :
.Pourquoi utiliser Memory Mapped File ou MappedByteBuffer en Java
Opérations de lecture et d'écriture de fichiers volumineux Java, MappedByteBuffer de Java Nio, mappage fichier/mémoire efficace
Une comparaison simple des performances de java.io et java.nio
天蓬老师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 :
http://stackoverflow.com/ques...
http://www.baeldung.com/java-...
怪我咯2017-04-18 10:54:01
用spark分析、
lines=sc.textFile("your_file");
filterlines=lines.filter(your_filter_function)
filterlines.xxx()