Java - опция новой строки не работает должным образом при запуске программы в Linux - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть приложение, в котором я хочу записать строку в файл как символ новой строки в EOF.

Моя программа выполняется в ОС Linux, а файл, который я хочу записать, находится в общей папке Windows.

Проблема: я могу добавить строку в файл как новую строку, когда я запускаю программу в ОС Windows с использованием eclipse. Но при развертывании и запуске приложения на Linux box строка добавляется в файл, а не как перевод строки.

Например: Допустим, если я хочу добавить новую строку в качестве «тестового пользователя» в файл, это то, как он добавляет.

Hr usr 
Hi usr
Jk  usrtest user

Я хочу, чтобы это было похоже на

Hr usr
Hi usr
Jk usrt
test user

BufferedWriter bw = new BufferedWriter(new FileWriter(fileUrl, true)); 
bw.newLine();
//didn’t write newline when I deployed it to Linux box
bw.write();
//OR
bw.append(System.lineSeperator() + “mystring”);
//didn’t write newline when I deployed it to Linux box
//OR
bw.append(“\r\n” + “mystring”);
//didn’t write newline when I deployed it to Linux box

Я почти уверен, что в коде нет ничего плохого, где-то UNIX или Windows запутались с разделением новой строки.

Любая информация будет принята с благодарностью.

Спасибо, Дживан.

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Кроме \n, как указано в других комментариях, вы можете попробовать String.format("%n") для новой строки.

Или даже вы можете использовать System.getProperty("line.separator");

0 голосов
/ 02 мая 2018

В этом случае "\ r \ n" работает, у меня возникла проблема с развертыванием, поэтому он не обновил класс в веб-логике при попытке "\ r \ n".

Спасибо за ваш интерес к моему сообщению.

0 голосов
/ 30 апреля 2018

Виновник найден здесь:

bw.append(“\r\n” + “mystring”);

Как упомянул Джонни Мопп , разрывная линия ведет себя по-разному в Linux. Для развертывания Linux вы должны использовать «\ n» вместо «\ r \ n».

Классическим решением этой проблемы является создание класса / метода Utility, который проверяет, в какой ОС работает JVM, а затем возвращает значение в зависимости от типа ОС (карта таких значений будет работать хорошо, ИМХО).

...