Текст из JTextArea
будет содержать \n
символов для новых строк независимо от платформы, на которой он работает.Вы захотите заменить эти символы символом новой строки для конкретной платформы при записи его в файл (для Windows это \r\n
, как уже упоминали другие).
Я думаю, что лучший способ сделать этоэто обернуть текст в BufferedReader
, который можно использовать для итерации по строкам, а затем использовать PrintWriter
, чтобы записать каждую строку в файл, используя новую строку для конкретной платформы.Существует более короткое решение, включающее string.replace(...)
(см. Комментарий Unbeli), но оно медленнее и требует больше памяти.
Вот мое решение - теперь оно стало еще проще благодаря новым функциям в Java 8:
public static void main(String[] args) throws IOException {
String string = "This is lengthy string that contains many words. So\nI am wrapping it.";
System.out.println(string);
File file = new File("C:/Users/User/Desktop/text.txt");
writeToFile(string, file);
}
private static void writeToFile(String string, File file) throws IOException {
try (
BufferedReader reader = new BufferedReader(new StringReader(string));
PrintWriter writer = new PrintWriter(new FileWriter(file));
) {
reader.lines().forEach(line -> writer.println(line));
}
}