[java] remplacer une partie du texte

jerome -  
 haha -
Bonjour,

comment faire pour remplacer une partie du texte située dans un fichier ?

Exemple :
le fichier "toto.txt" contient le mot "bonjour" que je souhaite remplacer par "bonsoir".
J'ai réussi à lire le texte ligne par ligne et à faire une recherche du mot "bonjour". Une fois ce mot trouvé, comment le remplacer ?
Faut-il créer un nouveau fichier et tout copier ? ou alors peut-on remplacer directement le texte sur le fichier existant ?

Merci d'avance,
Jérôme
A voir également:

6 réponses

franck
 
télécharge le logiciel gratuit replacetext et tu pourras faire tout ce que tu voudras dans le genre.
Franck
3
haha
 
mais lol...
0
jerome
 
Voici mon code :

/** je crée un flux entrant sur mon fichier */
BufferedReader in = new BufferedReader(new FileReader(fichier));

String ligne;
/** tant qu'il y a des lignes */
while ((ligne = in.readLine()) != null) {
/** je fais mon traitement */
}
1
maily Messages postés 7560 Statut Contributeur 453
 
Je ne connaissais pas ces objets!
Oublie ma remarque, c'est la manière la plus simple que tu as fait.

D'habitude, je passais par des FileInputStream et des FileOutputStream, c'est pour ça!
0
maily Messages postés 7560 Statut Contributeur 453
 
Bonjour!

Après avoir lu ta ligne, qu'en fais tu?
Je pense qu'il faut que tu récupère tout le contenu de ton fichier et que tu le modifies dans ton java. Après, tu écris dans le même fichier le contenu modifier.

0
jerome
 
bonjour,

je ne veux pas modifier tout le contenu mais seulement une partie.
Lorsque je lis une ligne, je recherche dans cette ligne le texte "bonjour".
2 cas se présentent :
- soit le texte n'y est pas et je passe à la ligne suivante.
- soit il y est et je veux le remplacer par "bonsoir" puis continuer la recherche.

Mon problème est de transformer "bonjour" en "bonsoir".
Quelle est la syntaxe pour réécrire exactement à la place du mot "bonjour" (je pense qu'il faut d'abord supprimer le mot puis écrire mais je n'y arrive pas) ?

J'espère avoir été plus clair.
Merci d'avance.
0
maily Messages postés 7560 Statut Contributeur 453
 
Tu utilise la class String?

Et bien, dans la javadoc, j'ai trouvé ça:
public String replaceAll(String regex,
                         String replacement)

    Replaces each substring of this string that matches the given regular expression with the given replacement.

    An invocation of this method of the form str.replaceAll(regex, repl) yields exactly the same result as the expression 
--

Maily
Ragondin, va au coin!
0
jerome > maily Messages postés 7560 Statut Contributeur
 
Merci beaucoup !
je crois que ca devrait aller avec ca.
je savais que j'avais déjà vu quelque chose de ce genre là mais je n'ai pas pensé à regarder dans la classe String !

a+
jerome
0
maily Messages postés 7560 Statut Contributeur 453 > maily Messages postés 7560 Statut Contributeur
 
Sincèrement, pour aller plus vite et éviter de lire ligne par ligne, ce qui est assez couteux, récupère tout, fait un replaceAll et réinsère le tout!
:)
0
jerome
 
Qu'appelles-tu "récupérer tout" ?
comment je fais exactement à partir d'unfichier sur mon disque dur ?

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maily Messages postés 7560 Statut Contributeur 453
 
Qu'utilise tu comme objet pour lire ligne par ligne ton fichier?
0
jerome
 
en fait, FileReader et FileWriter , c'est la même chose que FileInputStream et FileOutputStream mais c'est un peu plus simple à gérer lorsqu'on traite des flux de caractères.

Merci de ton aide en tout cas.
0