[java] écrire pls fois dans un fichier .txt
Résolu
moussecp
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'aimerais lire et écrire dans un fichier texte, cependant je souhaiterais à chaque fois introduire des nouvelles lignes tout en conservant le reste.
J'ai essayé de bidouiller quelque chose (cf. code ci-dessous) mais je suis convaincu qu'il y a moyen de faire de manière plus simple et plus propre.
Est-ce que quelqu'un sait m'aider ?
Merci ! :)
J'aimerais lire et écrire dans un fichier texte, cependant je souhaiterais à chaque fois introduire des nouvelles lignes tout en conservant le reste.
J'ai essayé de bidouiller quelque chose (cf. code ci-dessous) mais je suis convaincu qu'il y a moyen de faire de manière plus simple et plus propre.
Est-ce que quelqu'un sait m'aider ?
Merci ! :)
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; public class WriteText { public static void main(String[] args){ // Creates file if file doesn't exist to avoid reader error File f; f=new File("File.txt"); if(!f.exists()){ try { f.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } // Initiates FileReader FileReader fr = null; try { fr = new FileReader(f); } catch (FileNotFoundException e1) { e1.printStackTrace(); } // Initiates BufferReader BufferedReader br = new BufferedReader(fr); // Starts Reading/Writing in file try { String FileLine; // line of file to be read /* if FileLine is null (= if file is empty), print these lines */ if ((FileLine=br.readLine()) == null){ PrintWriter out = new PrintWriter("File.txt"); out.println("First line"); out.println("Another first line"); out.println("########"); out.print(" "); out.close(); } /* if File is not empty (=if first text lines have already been * printed), print new set of lines without erasing the first ones */ else{ while((FileLine=br.readLine())!=" "){ //line = line.trim(); System.out.println(FileLine); } PrintWriter out = new PrintWriter("File.txt"); out.println("a new line"); out.println("another new line"); out.println("########"); out.print(" "); out.close(); } } catch (IOException e1) { e1.printStackTrace(); } } }
A voir également:
- [java] écrire pls fois dans un fichier .txt
- Fichier bin - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
3 réponses
Effectivement il y a plus simple, en utilisant FileWriter(File file, boolean append)
Tu peux regarder un exemple d'utilisation sur Comment écrire à la fin d'un fichier ?
Tu peux regarder un exemple d'utilisation sur Comment écrire à la fin d'un fichier ?
moussecp
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
merci. :) je regarderais ça demain au boulot.
Salut,
Par défaut, on "écrase" le contenu éventuel du fichier:
Idem avec:
Pour écrire à la suite (append):
Cordialement,
Dan
Par défaut, on "écrase" le contenu éventuel du fichier:
PrintWriter out = new PrintWriter("File.txt");
Idem avec:
PrintWriter out = new PrintWriter("File.txt", false);
Pour écrire à la suite (append):
PrintWriter out = new PrintWriter("File.txt", true);
Cordialement,
Dan
Bonjour,
J'ai suivis vos conseils et malheureusement ça ne fonctionne pas. Peut-être ais-je mal compris ? En fait, mon compilateur me dit que l'expression FileWriter(file, bool) n'existe pas. =/
J'ai suivis vos conseils et malheureusement ça ne fonctionne pas. Peut-être ais-je mal compris ? En fait, mon compilateur me dit que l'expression FileWriter(file, bool) n'existe pas. =/
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; public class FileIO { private static File f = new File("OutputFile.txt"); public FileIO() throws IOException{ if (!f.exists()){ f.createNewFile(); } } public static void WriteInFile(String TextLine) throws FileNotFoundException{ PrintWriter out = new PrintWriter(f, true); out.println(TextLine); out.close(); } public static void main(String[] args) throws FileNotFoundException{ String number= null; for (int i = 0; i<10; i++){ number = String.valueOf(i); FileIO.WriteInFile(number + " Hello"); } } }
en fait si je comprends bien ce n'est pas PrintWriter qui possède la possibilité d'écrire à la suite mais FileWriter (comme le suggérait KX).
Voici, ci-dessous, mon nouveau code. Ça fonctionne mais j'aimerais pouvoir revenir à la ligne à chaque nouvelle écriture et non mettre tout à la suite. Je cherches...
=/
Voici, ci-dessous, mon nouveau code. Ça fonctionne mais j'aimerais pouvoir revenir à la ligne à chaque nouvelle écriture et non mettre tout à la suite. Je cherches...
=/
import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; public class FileIO { private static File f = new File("OutputFile.txt"); private static FileWriter w = null; public FileIO() throws IOException{ if (!f.exists()){ f.createNewFile(); } } public static void WriteInFile(String TextLine) throws IOException { try{ w = new FileWriter(f, true); w.write(TextLine,0,TextLine.length()); }catch(IOException ex){ ex.printStackTrace(); }finally{ if(w != null){ w.close(); } } } public static void main(String[] args) throws IOException{ String number= null; for (int i = 0; i<10; i++){ number = String.valueOf(i); FileIO.WriteInFile(number + "_Hello"); } } }
Re-bonjour,
J'ai trouvé une solution à mon problème de saut de ligne. Ce n'est peut-être pas la plus efficace mais ça fonctionne. :)
J'ai trouvé une solution à mon problème de saut de ligne. Ce n'est peut-être pas la plus efficace mais ça fonctionne. :)
public static void main(String[] args) throws IOException{ String number= null; String newline = System.getProperty("line.separator"); for (int i = 0; i<10; i++){ number = String.valueOf(i); FileIO.WriteInFile(number + "_Hello" + newline); } }
Soit tu fais une vraie classe, soit tu mets tout en static mais le mélange des deux comme tu l'as fait alourdi inutilement le code, et donc complexifie son utilisation pour rien !
import java.io.FileWriter; import java.io.IOException; public class Test { private static final String SAUTLIGNE = System.getProperty("line.separator"); public static void append(String fileName, String line) throws IOException { FileWriter file = new FileWriter(fileName, true); file.write(line+SAUTLIGNE); file.close(); } public static void main(String[] args) throws IOException { for (int i = 0; i<10; i++) append("OutputFile.txt",i+"_Hello"); } }