Каретка Return\Line питается в Java

Я создал текстовый файл в среде Unix с помощью кода Java.

Для записи текстового файла я использую java.io.FileWriter и BufferedWriter. И для новой строки после каждой строки я использую bw.newLine() метод (где bw объект BufferedWriter).

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

Моя проблема, после того, как я загружаю текстовый файл с почты в системе Windows, если я открыл тот текстовый файл, данные не правильно выровненные. newline() символ не работает, я думаю так.

Я хочу то же выравнивание текстового файла, как это находится в среде Unix, если я открыл текстовый файл в среде Windows также.

Как я разрешаю проблему?

Код Java ниже для Вашей ссылки (работающий в среде Unix):

File f = new File(strFileGenLoc);
BufferedWriter bw = new BufferedWriter(new FileWriter(f, false));
rs = stmt.executeQuery("select * from jpdata");
while ( rs.next() ) {
    bw.write(rs.getString(1)==null? "":rs.getString(1));
    bw.newLine();
}
50
задан ADTC 14 December 2013 в 17:06
поделиться

5 ответов

Java знает только о платформе, на которой она в настоящее время работает, поэтому она может дать вам только платформо-зависимый вывод на этой платформе (используя bw .newLine () ). Тот факт, что вы открываете его в системе Windows, означает, что вам либо нужно преобразовать файл перед его использованием (используя что-то, что вы написали, или программу вроде unix2dos ), либо вы должны вывести файл с возвратом каретки в формате Windows в исходной программе Java. Поэтому, если вы знаете, что файл всегда будет открываться на машине с Windows, вам придется вывести

bw.write(rs.getString(1)==null? "":rs.getString(1));
bw.write("\r\n");

. Стоит отметить, что вы не сможете вывести файл, который будет выглядеть правильно на обеих платформах, если он просто обычный текст, который вы используете, вы можете рассмотреть возможность использования html, если это электронная почта, или xml, если это данные. В качестве альтернативы вам может потребоваться какой-то клиент, который считывает данные, а затем форматирует их для платформы, которую использует средство просмотра.

59
ответ дан 7 November 2019 в 11:02
поделиться

Не знаю, кто просматривает ваш файл, но если вы откроете его в текстовом блокноте, а не в блокноте, разрывы строк будут отображаться правильно. Если вы используете специальное расширение файла, свяжите его с Wordpad, и все готово. Или воспользуйтесь любым другим, более продвинутым текстовым редактором.

4
ответ дан 7 November 2019 в 11:02
поделиться

bw.newLine (); не может гарантировать совместимость со всеми системами.

Если вы уверены, что он будет открываться в Windows, вы можете отформатировать его до новой строки Windows.

Если вы уже используете собственные команды unix, попробуйте unix2dos и конвертируйте уже сгенерированный файл в формат Windows, а затем отправьте письмо.

Если вы не используете команды unix и предпочитаете делать это на java, используйте `` bw.write ("\ r \ n") `и, если это не усложняет вашу программу, имейте метод, который обнаруживает работу system и пишет соответствующий перевод строки.

2
ответ дан 7 November 2019 в 11:02
поделиться

Метод newLine () обеспечивает добавление новой строки, совместимой с платформой ( 0Dh 0Ah для DOS, 0Dh для старые Mac, 0Ah для Unix / Linux). У Java нет возможности узнать, на какой платформе вы собираетесь отправлять текст. Об этом преобразовании должны позаботиться отправляющие почту объекты.

7
ответ дан 7 November 2019 в 11:02
поделиться

Если я вас правильно понял, мы говорим о вложении текстового файла. Это прискорбно, потому что если бы это было тело сообщения электронной почты, вы всегда могли бы использовать "\ r \ n", ссылаясь на http://www.faqs.org/rfcs/rfc822.html

Но поскольку это вложение , вы должны жить с системными различиями. Если бы я был на вашем месте, я бы выбрал один из этих вариантов:

a) поддерживать только клиенты Windows, используя "\ r \ n" в качестве конца строки.

б) предоставить два прикрепленных файла, один в формате Linux, а другой в формате Windows.

c) Я не знаю, должны ли вложения читать люди или машины, но если это люди, я бы подумал о том, чтобы прикрепить файл HTML вместо обычного текста. портативнее и красивее :)

2
ответ дан 7 November 2019 в 11:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: