получить «^ M» после каждой строки в Unix из файла, созданного Java - PullRequest
4 голосов
/ 04 ноября 2011

У меня есть Java-программа, которая создает файл и печатает кучу данных, используя этот оператор:

out.write(data+"|"+data2+"\r\n");

Когда я смотрю этот файл в vim в Unix, я вижу ^ M после каждой строки.Что это?Чем это вызвано?Как от этого избавиться?

Ответы [ 5 ]

8 голосов
/ 04 ноября 2011

Вам нужно использовать строку-разделитель для конкретной платформы вместо \r\n при создании выходной строки.Это можно получить с помощью System.getProperty("line.separator");.

4 голосов
/ 04 ноября 2011

^ M - это символ 13 (десятичный), который является возвратом каретки (в вашем коде это \r). Обратите внимание, что М - 13-я буква алфавита.

Вы можете избавиться от этого, не включив \r в свой код. Это будет хорошо работать, если вы работаете на платформе Unix. В Windows файл будет выглядеть забавно, если только вы не просматриваете его в Wordpad.

1 голос
/ 04 ноября 2011

Вы можете попробовать запустить файл через утилиту dos2unix в * nix, она избавится от ^M

1 голос
/ 04 ноября 2011

* nix использует \ n для перевода строки, Windows использует \ r \ n и создает этот символ ^ M в vi и т. П.

0 голосов
/ 05 ноября 2011

Обычно вы будете видеть их только в том случае, если первая строка была окончанием строки Unix (lf), но она также включает окончания строки DOS. Чтобы удалить их (и исправить файл), загрузите его снова, используя: e ++ ff = dos, затем: set ff = unix, затем запишите его.

В коде Java, если вы пишете текстовые данные вместо двоичных, используйте PrintStream и используйте print () и println (), которые добавляют правильное окончание строки для вашей системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...