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 :
Bien évidemment vu que le fichier est trop gros et ne rentre pas en mémoire, impossible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); }
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.
Partager