Ecrire dans un fichier txt dans une ligne spécifique

most27 Messages postés 74 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 9 juillet 2016 - 28 mai 2016 à 13:46
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

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
28 mai 2016 à 18:44
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);
0
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
Merci pour votre réponse je vais essai tout de suite
0
Rejoignez-nous