2013-08-31 20 views
23

ich ein wenig Datei Schriftsteller gemacht haben:Java: Filewriter: Erstellen Sie eine neue Linie

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) { 
    } 

Jetzt möchte ich eine neue Zeile machen, so wie du es mit tun kann „\ n“ normal, aber es scheint nicht zu funktionieren ...

Kann jemand eine solche neue Linie machen?

Vielen Dank im Voraus! :)

+0

'writer.write (" \ n ");' –

+1

'aber es scheint nicht zu funktionieren" können Sie die Ergebnisse posten, die Sie bekommen? – Pshemo

+1

Wenn ich die "\ n" Methode versuche, gibt es nichts ... nur 1254 (12 für sizeX, 54 für sizeY) ... – lukulus

Antwort

43

Wenn Sie neue Linie Zeichen in der aktuellen OS wie \r\n für Windows verwendet, erhalten möchten, können Sie sie erhalten, indem

  • System.getProperty("line.separator");
  • seit Java7 System.lineSeparator()
  • oder wie von Stewart erwähnt erzeugen sie über String.format("%n");

Sie können auch PrintStream und seine println Methode verwenden, die OS abhängig Linie Separator am Ende der Zeichenfolge

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

(BTW System.out ist auch Instanz von Printstream) hinzufügen, wird automatisch.

5

Versuchen Sie, Ihre FileWriter in eine BufferedWriter Verpackung:

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

Javadocs für BufferedWriter here.

19

Versuchen System.getProperty("line.separator")

writer.write(System.getProperty("line.separator")); 
0

Ich würde das Problem wie folgt angehen:

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(); 

Die wahre im Filewriter-Konstruktor anhängen können.
Die Methode newLine() wird von BufferedWriter zur Verfügung gestellt
Könnte als Lösung in Ordnung sein?

1

Wenn Sie meinen, verwenden Sie den gleichen Code, aber fügen Sie eine neue Zeile, so dass, wenn Sie etwas zu der Datei hinzufügen wird es in einer neuen Zeile sein. Sie können einfach BufferedWriters newLine() verwenden.
Hier habe ich Verbessert Sie auch Code: NumberFormatException war unnötig, da nichts in eine Zahl Datentyp umgewandelt wurde, zu speichern Variablen zu verwenden war auch einmal.

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"); 
} 
0

Hier "\ n" funktioniert auch gut. Aber das Problem liegt hier im Texteditor (wahrscheinlich Notepad). Versuchen Sie, die Ausgabe mit Wordpad zu sehen.

+0

Smart eins! Arbeitete für mich und sollte für Aufgaben arbeiten. Für ein Projekt sollte jedoch jeder der oben hervorgehobenen Ansätze verwendet werden –

4

Seit 1.8, dachte ich, das könnte eine zusätzliche Lösung wert auf die Antworten Zugabe sein:

Pfad java.nio.file.Files.write (Pfad Pfad, Iterable Linien, OpenOption ... Optionen) throws 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()); 

wenn auch vielleicht in derselben Datei anhängt, eine Ergänzungsflag mit Files.write() verwenden

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