web-dev-qa-db-fra.com

Créer une nouvelle ligne dans Java FileWriter

J'ai codé ce qui suit FileWriter:

try {
    FileWriter writer = new FileWriter(new File("file.txt"), false);

    String sizeX = jTextField1.getText();
    String sizeY = jTextField2.getText();
    writer.write(sizeX);
    writer.write(sizeY);

    writer.flush();
    writer.close();
} catch (IOException ex) {}

Maintenant, je veux insérer une nouvelle ligne, comme vous le feriez avec \n normalement, mais cela ne semble pas fonctionner.

Que peut-on faire pour résoudre cela?

Merci.

33
st.math

Si vous voulez obtenir nouvelle ligne caractères utilisés dans le système d'exploitation actuel, comme \r\n Pour Windows, vous pouvez les obtenir par

  • System.getProperty("line.separator");
  • depuis Java7 System.lineSeparator()
  • ou comme mentionné par Stewart les générer via String.format("%n");

Vous pouvez également utiliser PrintStream et sa méthode println qui ajoutera automatiquement un séparateur de ligne dépendant du système d'exploitation à la fin de votre chaîne.

PrintStream fileStream = new PrintStream(new File("file.txt"));
fileStream.println("your data");
//         ^^^^^^^ will add OS line separator after data 

(BTW System.out Est également une instance de PrintStream).

53
Pshemo

Essayez System.getProperty( "line.separator" )

   writer.write(System.getProperty( "line.separator" ));
27
Prabhaker

Essayez d’emballer votre FileWriter dans un BufferedWriter:

BufferedWriter bw = new BufferedWriter(writer);
bw.newLine();

Javadocs pour BufferedWriter ici .

6
Stewart

Depuis 1.8, je pensais que cela pourrait être une solution supplémentaire qui mérite d’être ajoutée aux réponses:

Path Java.nio.file.Files.write (chemin d'accès, lignes itérables, options OpenOption ...) lève IOException

StringBuilder sb = new StringBuilder();
sb.append(jTextField1.getText());
sb.append(jTextField2.getText());
sb.append(System.lineSeparator());
Files.write(Paths.get("file.txt"), sb.toString().getBytes());

Si vous ajoutez au même fichier, utilisez peut-être un indicateur Append avec Files.write ()

Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND);
4
Nick Bell

Essayer:

String.format("%n");

Voir cette question pour plus de détails.

2
Stewart

Si vous voulez dire utiliser le même code mais ajouter une nouvelle ligne, de sorte que lorsque vous ajoutez quelque chose au fichier, il sera sur une nouvelle ligne. Vous pouvez simplement utiliser newLine() de BufferedWriter.
Ici, j'ai amélioré le code également: NumberFormatException n'était pas nécessaire, car aucun type de données numérique n'était transtypé, l'enregistrement des variables à utiliser une fois l'était également.

try {
    BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"));
        writer.write(jTextField1.getText());
        writer.write(jTextField2.getText());
        writer.newLine();
        writer.flush();
        writer.close();
} catch (IOException ex) {
    System.out.println("File could not be created");
}
1
Lee Fogg

Ici "\ n" fonctionne aussi très bien. Mais le problème ici réside dans l'éditeur de texte (probablement le bloc-notes). Essayez de voir la sortie avec Wordpad.

1
Roushan Kumar

Je voudrais aborder le problème comme ceci:

    BufferedWriter output;
    output = new BufferedWriter(new FileWriter("file.txt", true));
    String sizeX = jTextField1.getText();
    String sizeY = jTextField2.getText();
    output.append(sizeX);
    output.append(sizeY);
    output.newLine();
    output.close();

Le true dans le constructeur FileWriter permet d’ajouter.
La méthode newLine () est fournie par BufferedWriter.
Pourrait être une solution acceptable?

0
blackbird014