Parsing fichier texte volumineux
Bonjour,
Je souhaite réaliser un programmer effectuant une recherche et un remplacement de certaines chaines de caractères dans des fichiers textes volumineux (jusqu'à 16 Mo).
J'ai tenté plusieurs recherche sur le net, mais les seuls bouts de code que j'arrive à trouver ressemblent à ca :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
String logcombat_name = args[0];
String chaine = "";
String ligne;
//lecture du fichier texte
try
{
InputStream ips = new FileInputStream(logcombat_name);
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
while ((ligne = br.readLine()) != null)
{
// System.out.println(ligne);
chaine += ligne + "\n";
}
br.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
//création ou ajout dans le fichier texte
try
{
FileWriter fw = new FileWriter(logcombat_name, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter fichierSortie = new PrintWriter(bw);
fichierSortie.println(chaine + "\n test de lecture et écriture !!");
fichierSortie.close();
System.out.println("Le fichier " + logcombat_name + " a été créé!");
} catch (Exception e)
{
System.out.println(e.toString());
} |
Bien évidemment vu que le fichier est trop gros et ne rentre pas en mémoire, impossible.
Existe-t-il une fonction permettant d'ajouter/remplacer dans un fichier texte sans avoir à lire et stocker tout son contenu en mémoire ?
Je pense qu'il serait possible de solutionner le problème en écrivant une copie du fichier au fur et à mesure qu'il est lu en modifiant la ligne voulue au moment de l'écriture, mais cette solution est bancale et mal appropriée (longue, etc.).
Merci pour votre aide.