Ecrire dans un fichier txt dans une ligne spécifique

Messages postés
74
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
9 juillet 2016
- - Dernière réponse : most27
Messages postés
74
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
9 juillet 2016
- 28 mai 2016 à 20:16
Bonjour ,je veut écrire dans un fichier txt ,dans une ligne spécifique sans effacer son contenue mais ça ne marche pas j'ai essai deux codes :
Le premier -->

public static void ecrir_ligne_fichier(int num_ligne, String path,String texte) throws IOException {

FileWriter fichiergraph = new FileWriter(path,true);
BufferedWriter output = new BufferedWriter(fichiergraph);
int compt=1;
while ( compt<=num_ligne){
compt++;
output.write("\n");

}

output.write(texte);
output.close();
}

-->Le deuxième code consiste à lire les lignes du fichier ensuite écrire dans la ligne voulu voici mon code


public static void ecrir_ligne_fichier(int num_ligne, String path,String texte) throws FileNotFoundException, IOException {

String l = null,ligne=null;

int compt=0;

FileReader fichiergraph = new FileReader(path);

BufferedReader br = new BufferedReader(fichiergraph);


FileWriter fichiergraphe = new FileWriter(path,true);
BufferedWriter output = new BufferedWriter(fichiergraphe);

while ((ligne=br.readLine())!=null && compt<=num_ligne){
compt++;

}

output.write(texte);
br.close();
output.close();
}


Je ne comprend pas ou est le problème de l'aide s'il vous plaie j'en est vraiment besoin merci d'avance
Afficher la suite 

2 réponses

Messages postés
16036
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 octobre 2019
88
0
Merci
Bonjour,

Un fichier c'est une succession de bits écrits les uns à la suite des autres sur le disque dur, tu ne peux pas insérer du texte au milieu, ou alors il faut décaler toute la fin du fichier d'autant de bits que ce que tu as inséré, sous réserve d'avoir assez d'espace à la fin du fichier.

Bref, le plus simple c'est de tout lire dans une liste, ajouter ta ligne et tout réécrire à partir de liste.

import java.nio.file.*;
import java.util.List;

Path path = Paths.get("C:/test.txt");
List<String> lines = Files.readAllLines(path);
lines.add(3, "test"); // index 3: between 3rd and 4th line
Files.write(path, lines);
Commenter la réponse de KX
Messages postés
74
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
9 juillet 2016
0
Merci
Merci pour votre réponse je vais essai tout de suite
Commenter la réponse de most27