Новые строки в строке не записываются в файл - PullRequest
2 голосов
/ 15 июля 2009

Я пытаюсь написать программу, которая манипулирует строками Юникода, считываемыми из файла. Я подумал о двух подходах - один, где я читаю весь файл, содержащий новые строки, выполняю пару замен регулярных выражений и записываю его обратно в другой файл; другой, где я читаю в файле построчно и сопоставляю отдельные строки, подставляю их и выписываю. Я не смог протестировать первый подход, потому что новые строки в строке не записываются как новые строки в файл. Вот пример кода для иллюстрации:

String output = "Hello\nthere!";
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16"));

System.out.println(output);
oFile.write(output);
oFile.close();

Оператор печати выводит

Hello
есть!

но содержимое файла

Hellothere!

Почему мои переводы строк не записываются в файл?

Ответы [ 3 ]

9 голосов
/ 15 июля 2009

Вы должны попробовать использовать

System.getProperty("line.separator")

Вот непроверенный пример

String output = String.format("Hello%sthere!",System.getProperty("line.separator"));
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16"));

System.out.println(output);
oFile.write(output);
oFile.close();

Я не смог протестировать первый подход, потому что новые строки в строки не пишутся как переводы строк файл

Ты уверен в этом? Не могли бы вы опубликовать код, который показывает этот конкретный факт?

1 голос
/ 16 июля 2009

Подумайте об использовании PrintWriters, чтобы получить метод println, известный, например, из System.out

1 голос
/ 15 июля 2009

Используйте System.getProperty ("line.separator"), чтобы получить новую строку для конкретной платформы.

...