Запись текстовой области javafx в текстовый файл с переносами строк - PullRequest
0 голосов
/ 13 июня 2018

Так что я сейчас пытаюсь сохранить содержимое текстовой области javafx в текстовый файл, используя класс форматера.Проблема в том, что текст просто сохраняется в одну строку без разрывов строки.

Это код, который я использую для записи в текстовый файл

 File file = new File(link);
                    Formatter formatter = null;
                    try {
                        formatter = new  Formatter(file);
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    formatter.format(textArea.getText() + "\n");

РЕДАКТИРОВАТЬ: Я обнаружил проблему: это ошибка Windows Notepad.Когда я открываю TXT-файл в другом текстовом редакторе, таком как notepadd ++, он прекрасно работает

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вы должны закрыть средство форматирования

formatter.close();

Вывод средства форматирования сначала буферизуется в памяти.Поэтому вы должны закрыть свой форматер, как только закончите.

используйте блок finally для этого

    try {
        //code
    } catch{
     //code
    }
    finally {
        formatter.close();
    }
0 голосов
/ 13 июня 2018

вам действительно нужно использовать класс Formatter?Я полагаю, этот класс создает разделители строк (только) для заполнителя %n (но, похоже, игнорирует символы новой строки) в содержимом параметра формата (см. Также соответствующий javadoc ):

format(String format, Object... args)
// Writes a formatted string to this object's destination using the specified format string and arguments.

Одним из решений может быть указание строки формата как "%s%n" (что означает, что вы хотите отформатировать строку, а затем разрыв строки) и передать содержимое TextArea, например, formatter.format("%s%n", textArea.getText()), если вы действительно нужно использовать форматтер.

В противном случае вы также можете напрямую выводить содержимое textArea в файл через некоторый Writer:

FileWriter w = new FileWriter(file);
w.write(textArea.getText());
w.close();
...