Подтвердить что ты не робот

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

Я написал небольшую файловую книгу:

    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" в обычном режиме, но, похоже, не работает...

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

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

4b9b3361

Ответ 1

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

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

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

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

(BTW System.out также является экземпляром PrintStream).

Ответ 2

Попробуйте System.getProperty( "line.separator" )

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

Ответ 3

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

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

Javadocs для BufferedWriter здесь.

Ответ 4

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

Путь java.nio.file.Files.write(путь пути, строки Iterable, опции OpenOption...) 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());

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

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

Ответ 6

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

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

Ответ 7

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

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

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

Ответ 8

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