Java: FileWriter: создайте новую строку

Я сделал небольшой файл writer:

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

теперь я хочу сделать новую строку, так же, как вы можете сделать это с" n " нормально, но это, похоже, не работает...

кто-нибудь знает, как сделать такую новую строку?

спасибо заранее! :)

8 ответов


если вы хотите получить новая строка символы, используемые в текущей ОС, как \r\n для Windows, вы можете получить их с помощью

  • System.getProperty("line.separator");
  • С Java7 System.lineSeparator()
  • или, как упоминалось Стюартом, генерировать их через String.format("%n");

вы также можете использовать PrintStream и println метод, который автоматически добавит разделитель зависимых от ОС строк в конце вашей строки

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

(кстати,System.out is также экземпляр PrintStream).


попробовать System.getProperty( "line.separator" )

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

попробуйте обернуть свой FileWriter на BufferedWriter:

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

Javadocs для BufferedWriter здесь.


начиная с 1.8, я подумал, что это может быть дополнительное решение, которое стоит добавить к ответам:

путь java.НИО.файл.Файлы.write (путь пути, итерационные строки, OpenOption... options) бросает 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());

при добавлении к тому же файлу, возможно, используйте флаг добавления с файлами.написать ()

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

попробуй:

String.format("%n");

посмотреть этот вопрос для получения более подробной информации.


Если вы имеете в виду использовать тот же код, но добавить новую строку, так что, когда вы что-то добавить в файл, он будет на новой строке. Вы можете просто использовать .
Здесь я также улучшил код: NumberFormatException было ненужным, поскольку ничто не было приведено к типу данных number, сохранение переменных для использования когда-то также было.

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

Я бы решил проблему следующим образом:

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

true в конструкторе FileWriter позволяет добавлять.
Метод newLine () предоставляется BufferedWriter
Может быть нормально, как решение?


здесь "\n " также работает нормально. Но проблема здесь заключается в текстовом редакторе (возможно, блокноте). Попробуйте увидеть вывод с помощью Wordpad.