Запись содержимого JTextArea в файл

У меня есть одна кнопка JTextArea и кнопка «Отправить» в Java Swing. Нужно записать содержимое текстовой области в файл с разрывами строк. Я получил вывод вроде, он записан как одна строка в файле.

try {
    BufferedWriter fileOut = new BufferedWriter(new FileWriter("filename.txt")); 
    String myString1 =jTextArea1.getText();
    String myString2 = myString1.replace("\r", "\n");

    System.out.println(myString2);

    fileOut.write(myString2);
    fileOut.close();
} catch (IOException ioe) {
    ioe.printStackTrace();
}

Пожалуйста, дайте мне несколько предложений


person SK0004    schedule 09.05.2012    source источник
comment
@Charles: я пытаюсь узнать что-то новое :-)   -  person SK0004    schedule 09.05.2012
comment
-1 за отсутствие исследований. Ответ нашелся в гугле за 5 секунд.   -  person MarioDS    schedule 09.05.2012
comment
Мне просто любопытно: что произойдет, если вы просто запишете строку в файл?   -  person Moritz Petersen    schedule 09.05.2012


Ответы (4)


Почему бы не использовать JTextArea, встроенный в write функция?

JTextArea area = ...
try (BufferedWriter fileOut = new BufferedWriter(new FileWriter(yourFile))) {
    area.write(fileOut);
}
person Jeffrey    schedule 09.05.2012
comment
+1 интересно! Я впервые узнаю об этом методе. - person Eng.Fouad; 09.05.2012

Замените все \r и \n на:

System.getProperty("line.separator")

Это сделает ваш код независимым от платформы и будет записывать новые строки в файлы там, где это необходимо.

Изменить: поскольку вы используете BufferedWriter, вы также можете использовать ссылку метод newLine()

person MarioDS    schedule 09.05.2012

Почему вы заменили \r на \n?

Разделитель строк должен быть "\r\n".

person nnhthuan    schedule 09.05.2012
comment
Разделитель строк на самом деле зависит от платформы. В зависимости от базовой системы это может быть \r\n, \n\r, \n или \r. - person Jeffrey; 09.05.2012

Вот что я придумал:

public void actionPerformed(ActionEvent event) {
BufferedWriter writer;
        try {
            writer = new BufferedWriter(new FileWriter("SimpleText.txt",
                    false));
            text.write(writer);
            writer.close();
            JOptionPane.showMessageDialog(null, "File has been saved","File Saved",JOptionPane.INFORMATION_MESSAGE);
            // true for rewrite, false for override

        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Error Occured");
            e.printStackTrace();
        }
    }

Надеюсь это поможет

person Thor    schedule 05.03.2014