51

I have coded the following 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) {}

Now I want to insert a new line, just like you would do it with \n normally, but it doesn't seem to work.

What can be done to solve this?

Thank you.

log_0
  • 838
  • 2
  • 7
  • 17

10 Answers10

73

If you want to get new line characters used in current OS like \r\n for Windows, you can get them by

  • System.getProperty("line.separator");
  • since Java7 System.lineSeparator()
  • or as mentioned by Stewart generate them via String.format("%n");

You can also use PrintStream and its println method which will add OS dependent line separator at the end of your string automatically

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

(BTW System.out is also instance of PrintStream).

Pshemo
  • 122,468
  • 25
  • 185
  • 269
32

Try System.getProperty( "line.separator" )

   writer.write(System.getProperty( "line.separator" ));
Prabhaker A
  • 8,317
  • 1
  • 18
  • 24
13

Try wrapping your FileWriter in a BufferedWriter:

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

Javadocs for BufferedWriter here.

Stewart
  • 17,616
  • 8
  • 52
  • 80
3

Try:

String.format("%n");

See this question for more details.

Community
  • 1
  • 1
Stewart
  • 17,616
  • 8
  • 52
  • 80
3

If you mean use the same code but add a new line so that when you add something to the file it will be on a new line. You can simply use BufferedWriter's newLine().
Here I have Improved you code also: NumberFormatException was unnecessary as nothing was being cast to a number data type, saving variables to use once also was.

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");
}
Lee Fogg
  • 775
  • 6
  • 22
3

Since 1.8, I thought this might be an additional solution worth adding to the responses:

Path java.nio.file.Files.write(Path path, Iterable lines, OpenOption... options) 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());

If appending to the same file, perhaps use an Append flag with Files.write()

Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND);
Nick Bell
  • 516
  • 3
  • 16
1

Here "\n" is also working fine. But the problem here lies in the text editor(probably notepad). Try to see the output with Wordpad.

  • Smart one! Worked for me and should work for assignments. However for a project, any of the above highlighted approaches should be used – Navin Israni Apr 10 '16 at 07:54
  • yes, Notepad doesn't work with `/n`, but WordPad works fine with `/n`. Or need to use `line.separator` for Notepad. – invzbl3 Aug 04 '19 at 13:05
1

One can use PrintWriter to wrap the FileWriter, as it has many additional useful methods.

try(PrintWriter pw = new PrintWriter(new FileWriter(new File("file.txt"), false))){
   pw.println();//new line
   pw.print("text");//print without new line
   pw.println(10);//print with new line
   pw.printf("%2.f", 0.567);//print double to 2 decimal places (without new line)
}
Unmitigated
  • 76,500
  • 11
  • 62
  • 80
0

I would tackle the problem like this:

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

The true in the FileWriter constructor allows to append.
The method newLine() is provided by BufferedWriter
Could be ok as solution?

blackbird014
  • 2,069
  • 1
  • 18
  • 23
-1

using simple \n to break line in write file and normal output in java

  • 1
    Your answer doesn't add anything to the question, which hasn't been answered already. – Janos May 15 '22 at 14:16