Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1359 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  mise a jour d'un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mise a jour d'un fichier texte

n°2180270
bloomingda​ls
Posté le 13-03-2013 à 17:14:50  profilanswer
 

bonsoir tou le monde,
 
j'ai un fichier texte sur mon bureau appélé "oui" qui est composé des lignes suivantes:
1.3.6.1.2.1.15.3.1.1.10.0.5.6 = 10.0.5.6
.....
 
j'ai développé un petit code pour lire le fichiers et afficher juste le champs après le séparateur " = "  dans la console de netbeans.
ce que je veux faire c'est mettre a jour ce fichier " oui" en ecrivant dans  le resultat du code afin d'avoir ces lignes  
10.0.5.6
10.0.5.6
10.0.5.6
.....
 
le problème est que les lignes s'ajoutent à la fin du fichier et moi je veux qu'elles remplacent les anciennes
pouriez vous me donner une idée comment réaliser ca??
 
merci

mood
Publicité
Posté le 13-03-2013 à 17:14:50  profilanswer
 

n°2180277
willy le k​id
Posté le 13-03-2013 à 18:01:43  profilanswer
 

Il n'y a pas d'API "tout en un" de "rechercher et remplacer" de chaînes dans un fichier texte.
 
Donc tu vas coder les rechercher remplacer, je recommande d'utiliser le  
String.replaceAll(String regex, String replacement)  
parce que les expressions régulières c'est bien pratique
 
Tu lis le fichier en entrée avec un Bufferedreader.
Tu itéres sur les lignes avec un 'readLine',  
chacune des lignes lues est un String
Tu fais ta modification sur la ligne avec le replaceAll (ou replace ou replaceFirst, voir javadoc)
Tu écrits les lignes modifiées dans un fichier de sortie
>BufferedReader reader = new BufferedReader(new FileReader(in));
>PrintWriter writer = new PrintWriter(new FileWriter(out));
>String line = null;
>while ((line = reader.readLine()) != null)  
>  writer.println(line.replaceAll(regex,newstring));
 
et tu n'oublies pas de fermer les ressources close() à la fin
et tu écrases le fichier en entrée avec le fichier de sortie.


Message édité par willy le kid le 13-03-2013 à 18:04:47
n°2180412
bloomingda​ls
Posté le 14-03-2013 à 11:20:20  profilanswer
 

merci bcp pour ta réponse.
c'est à peu près ce que je cherchais sauf que moi je veux que le fichier lu que tu as nommé dans ton exemple "in" soit le meme que le fichier de sortie out.
de facon à ce que mon code lie une ligne du fichier in et la remplace par la nouvelle valeur puis il passe à la prochaine ligne et ainsi de suite.
le problème est que je sais pas ou placer mon printWriter car a chaque fois il crée de nouveau le fichier.
 
j'espère avoir été claire je sais que c'est pas parfaitement expliqué
 
merci bcp

n°2180419
willy le k​id
Posté le 14-03-2013 à 11:36:52  profilanswer
 

Tu as besoin d'un RandomAccessFile.
Permets de lire et écrire dans un fichier en se positionnant à la position qui va bien. Perso je trouve que les méthodes fournies sont un peu 'barbares' (pas de readline) et moins 'débutant friendly' (attention aux bytes).
http://docs.oracle.com/javase/tuto [...] /rafs.html
 
La lecture d'un fichier ou stream 'in' pour modification  
et versement dans un stream ou fichier out est un grand classique le l'api java.io.
L'avantage est que tu as toujours un streamReader ou streamWriter (ou InputStream ou OutputStream) adapté à ton problème
(fichier texte plat, fichier texte à ligne, gros fichier, fichier binaire ...) ... mais ca implique un 'in' et un 'out'.


Message édité par willy le kid le 14-03-2013 à 11:41:44
n°2180430
bloomingda​ls
Posté le 14-03-2013 à 12:03:21  profilanswer
 

dans ton dernier poste tu m'a dit d'ecraser mon fichier d'entree par celui de sortie et j'ai trouvé que c'est une très bonne idée voire bcp plus simple a faire qu'autre chose
j'ai essayé d'utiliser la méthode rename() pour renommer le fichier d'entrée en celui de sortie (ce qui est équivalent) à ecraser sauf que ca me retourne une erreur.
as tu une idée comment faire cet ecrasement
 
merci et dsl pour le derangement

n°2180436
willy le k​id
Posté le 14-03-2013 à 12:18:53  profilanswer
 

Je pense que tu n'as pas fais les close() sur les reader et writer et tu ne peux pas renommer un fichier encore ouvert
 
Ensuite, si out existe, tu supprimes in, et tu fais le renameTo. Ca doit le faire.
 
File in = new File ("C:\\toto.txt" );
File out = new File (C:\\toto.avecmodifs.txt" );
 
if (out.exists() ){
  if (in.delete() ){
    out.renameTo(in);
  }
}

n°2180442
bloomingda​ls
Posté le 14-03-2013 à 12:48:33  profilanswer
 

merci bcp  
ca marche et j'ai le resultat final . vraiment j'ai trouvé mon bonheur sur ce forum vous êtes très très serviables et patients ici.
encore merci et tres bonne journée


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  mise a jour d'un fichier texte

 

Sujets relatifs
EXCEL 2007-VBA- Créer une zone de dessin et mise à l'échelle de formesparcours fichier HTML
VBA : Copier/Coller cellule d'un fichier en lecture seuleSupprimer la ligne X d'un fichier txt
comment enregistrer le chemin d'un fichier pdf dans une BD[Résolu]Copier fichier das un autre avec dossier date et heure
Macro VBA Excel pour écrire dans un fichierdéplacement fichier sur lecteur réseau
Ne pas mettre à jour TCD à l'ouvertureRenommage de fichier avec le contenu de la 1ère ligne
Plus de sujets relatifs à : mise a jour d'un fichier texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR