Java: FileWriter: créer une nouvelle ligne

j'ai fait un petit rédacteur de dossier:

    try {
        FileWriter writer = new FileWriter(new File("file.txt"), false);
        try {
            String sizeX = jTextField1.getText();
            String sizeY = jTextField2.getText();
            writer.write(sizeX);
            writer.write(sizeY);
            writer.flush();
            writer.close();
        } catch (NumberFormatException e) {
        }
    } catch (IOException ex) {
    }

Maintenant, je veux faire une nouvelle ligne, comme vous pouvez le faire avec "n" normalement, mais il ne semble pas fonctionner...

personne Ne sait comment faire une telle nouvelle ligne?

Merci d'avance! :)

27
demandé sur Aditya W 2013-08-31 19:28:58

8 réponses

si vous voulez obtenir nouvelle ligne caractères utilisés dans L'OS courant comme \r\n Pour Windows, vous pouvez les obtenir par

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

vous pouvez également utiliser PrintStream et sa méthode println qui ajoutera OS séparateur de ligne dépendant à la fin de votre chaîne automatiquement

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

(BTW System.out est aussi une instance de PrintStream).

45
répondu Pshemo 2016-09-23 09:43:46

Essayer System.getProperty( "line.separator" )

   writer.write(System.getProperty( "line.separator" ));
24
répondu Prabhaker 2013-08-31 15:37:27

essayez d'emballer votre FileWriter dans un BufferedWriter :

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

Javadoc BufferedWriter ici .

6
répondu Stewart 2013-08-31 15:36:36

depuis 1.8, j'ai pensé que cela pourrait être une solution supplémentaire intéressant d'Ajouter aux réponses:

Chemin d'accès de java.nio.fichier.Fichier.Ecrire (chemin d'accès, lignes itérables, OpenOption... options) jette 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 une option Ajouter des fichiers.write ()

Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND);
4
répondu Nick Bell 2016-09-09 16:25:44

, Essayez:

String.format("%n");

voir cette question pour plus de détails.

2
répondu Stewart 2017-05-23 11:54:43

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 le newLine() de BufferedWriter .

Ici, j'ai amélioré votre code aussi: NumberFormatException était inutile car rien n'était moulé à un type de données de nombre, enregistrant des variables à utiliser une fois é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
répondu Lee Fogg 2016-06-03 19:37:38

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 vrai dans le constructeur FileWriter permet d'ajouter.

La méthode newLine () est fournie par BufferedWriter

Pourrait être bien comme solution?

0
répondu blackbird014 2013-08-31 15:53:57

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.

0
répondu Roushan Kumar 2015-01-26 12:18:04