Se connecter / S'enregistrer
Votre question

Ecriture dans un fichier txt sous java

Tags :
  • Java
  • Programmation
Dernière réponse : dans Programmation
11 Juin 2012 14:40:47

Bonjour,

Mon probleme est le suivant:

Comment écrire dans un fichier txt une phrase à une ligne précise sans tout éffacer dan sle fichier.

Ex: texte original:

composant 1
composant 2
composant 3
:
:
composant n

et voici le texte modifié:

composant 1
court_circuit ( modification par rapport au texte original)
composant 3
:
:
composant n

J'ai essayé de chercher mais je ne comprends pas pourquoi lorsque je modifie le texte tous s'efface sauf la modification




Autres pages sur : ecriture fichier txt java

a c 232 L Programmation
11 Juin 2012 15:32:55

Salut,

Tu ne peux pas faire ça directement dans un fichier. Il te faudrait un buffer qui permette d'insérer du texte et de le supprimer au milieu.

Tu peux lire tout le contenu du fichier, le stocker en mémoire, modifier le contenu, et sauvegarder tout.
m
0
l
11 Juin 2012 17:21:55

Merci pour ta reponse:

voila mon code pour copier le texte:


  1. public File copie(){
  2.  
  3. System.out.println("Chemin absolu du fichier : " + fichier_de_lecture.getAbsolutePath());
  4. System.out.println("Nom du fichier : " + fichier_de_lecture.getName());
  5. System.out.println("Est-ce qu'il existe ? " + fichier_de_lecture.exists());
  6. System.out.println("Est-ce un répertoire ? " + fichier_de_lecture.isDirectory());
  7. System.out.println("Est-ce un fichier ? " + fichier_de_lecture.isFile());
  8. System.out.println("\n");
  9. System.out.println("Chemin absolu du fichier : " + fichier_de_copie.getAbsolutePath());
  10. System.out.println("Nom du fichier : " + fichier_de_copie.getName());
  11. System.out.println("Est-ce qu'il existe ? " + fichier_de_copie.exists());
  12. System.out.println("Est-ce un fichier ? " + fichier_de_copie.isFile());
  13.  
  14. FileInputStream netlist_fonctionnelle;
  15. FileOutputStream netlist_dysfonctionnelle;
  16. BufferedInputStream buffer_en_lecture;
  17.  
  18. try {
  19.  
  20. netlist_fonctionnelle = new FileInputStream(fichier_de_lecture);
  21. netlist_dysfonctionnelle = new FileOutputStream(fichier_de_copie);
  22. buffer_en_lecture = new BufferedInputStream(new FileInputStream(fichier_de_lecture));
  23.  
  24. byte[] buf = new byte[8];
  25.  
  26. while(buffer_en_lecture.read(buf) != -1){
  27. netlist_dysfonctionnelle .write(buf);
  28. }
  29.  
  30. netlist_fonctionnelle.close();
  31. netlist_dysfonctionnelle.close();
  32.  
  33. }
  34. e.printStackTrace();
  35. }
  36. catch (IOException e) {
  37. e.printStackTrace();
  38. }
  39.  
  40. System.out.println("La copie de la netlist fonctionnelle est dans le fichier "+fichier_de_copie.getName());
  41. System.out.println("Elle se trouve à l'emplacement " + fichier_de_copie.getAbsolutePath());
  42.  
  43. return fichier_de_copie;
  44. }



voici le code pour ecrire dans cette copie:


  1. public void ecriture_court_circuit()
  2. {
  3.  
  4. try {
  5. fw = new FileWriter(fichier_modifie);
  6. fw.write("court_circuit\n");
  7. fw.close();
  8.  
  9. }catch (FileNotFoundException e) {
  10. e.printStackTrace();
  11. }
  12. catch (IOException e) {
  13. e.printStackTrace();
  14. }
  15. }


et enfin voici le main qui appel tout ceci:

  1. public class main {
  2.  
  3. public static void main(String[] args) {
  4.  
  5. File fichier_de_lecture = new File("RC_simple.cir");
  6. File fichier_de_copie = new File("RC_simple_copie.cir");
  7.  
  8. Copie_netlist cp1=new Copie_netlist(fichier_de_lecture,fichier_de_copie);
  9. fichier_de_copie=cp1.copie();
  10.  
  11. Modif_court_circuit CC1=new Modif_court_circuit(fichier_de_copie);
  12. CC1.ecriture_court_circuit();
  13. }
  14. }


le soucis c qu'en ecrivant dans ce fichier; il ny reste plus rien a part ma modif, le reste est écrasé par ma modif..

je ne comprend pas pourquoi cela ecrase tout?
Aurais tu une petite piste pour moi ?
m
0
l
Contenus similaires
a c 232 L Programmation
11 Juin 2012 19:25:11

Salut,

Il faut lire la documentation... :) 
Par défaut FileWriter remplace le contenu du fichier. Tu peux choisir d'ajouter le contenu à la fin en passant la valeur true au 2ème paramètre append
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/Fi...

Mais si tu veux remplacer un texte au milieu, c'est différent, je t'ai expliqué le principe plus haut.
m
0
l
11 Juin 2012 19:54:07

Merci pour ton aide,effectivement j'aurais du lire la javadoc :( )

Dernieres petites questions comment pourrais je choisir la ligne du txt,pour pouvoir l'effacer ,et écrire mastring par dessus?
m
0
l
12 Juin 2012 10:20:26

Meci beaucoup pour ton aide qui m'a été très précisieuse.
Grâce à toi je peux mantenant avancer.
m
0
l
a c 232 L Programmation
12 Juin 2012 10:36:13

Pas de soucis. Bonne continuation ;) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS