有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件
人生最曼妙的风景,竟是内心的淡定与从容!
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~
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 à :
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
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-...
用spark分析、lines=sc.textFile("your_file");filterlines=lines.filter(your_filter_function)filterlines.xxx()
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~
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 à :
.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
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-...
用spark分析、
lines=sc.textFile("your_file");
filterlines=lines.filter(your_filter_function)
filterlines.xxx()