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

434
Lucas Souza

Я попытался вывести текстовый файл с помощью операторов перенаправления > and >>из класса Java, но он игнорирует перевод строки \nиз Java, когда файл .txt открывается с помощью Блокнота из Windows 10. Это интересно, потому что в командной строке перевод строки работает нормально, и если Я использую System.out.println("")это работает нормально в блокноте .

Класс с переводом \nстроки:

class n{  public static void main(String[] args){  System.out.print("This\n"); System.out.print("Should\n"); System.out.print("Be\n"); System.out.print("Separated.\n");   }  } 

Класс с использованием System.out.println(""):

class ln{  public static void main(String[] args){  System.out.println("This"); System.out.println("Should"); System.out.println("Be"); System.out.println("Separated.");  }  } 

Вывод в подсказке :

Prompt

Вывод в текстовом файле из класса n ( n.txt ), открытого с помощью Блокнота :

ThisShouldBeSeparated. 

Вывод в текстовом файле из класса ln ( ln.txt ), открытого с помощью Блокнота :

This Should Be Separated. 

Эти два выше должны быть равны.

Я протестировал общедоступный класс n, но результат не изменился.

Я искал и нашел способ echoперевода строки, это не то, что я хочу, я хочу, чтобы перенаправленный текстовый файл работал как подсказка .

Одна интересная деталь заключается в том, что когда я вставляю текст из n.txt сюда ( написание вопроса ), в Microsoft Word, Notepad ++ или WordPad ( или открываю файл в указанных программах ), он «исправляет» ошибку и равен результату. из класса ln .

РЕДАКТИРОВАТЬ

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

Если я ошибаюсь, я был бы счастлив, чтобы меня поправили.

0
Я опубликовал вопросы и ответы, хотя и нашел решение во время написания вопроса, потому что сначала я даже не писал, что использовал _Notepad_, потому что был уверен, что проблема была в _prompt_. Поэтому я думаю, что другие могут иметь такие же проблемы и трудности, чтобы найти решение этой проблемы. Lucas Souza 7 лет назад 0
Вопросы о проблемах программирования на Java не по теме для SU, а проблема «мой текстовый файл не показывает разрывов строк в блокноте» уже была рассмотрена (как вы указали). Голосование, чтобы закрыть. Ƭᴇcʜιᴇ007 7 лет назад 0
@ Ƭᴇcʜιᴇ007 Я поддерживаю Q & A, потому что я не думал о возможной проблеме в _Notepad_, и я думаю, что другие люди могут подумать, что проблема в _prompt_, а не в _Notepad_, как я раньше. Если этого недостаточно, чтобы дифференцировать этот вопрос до «_Notepad_ игнорируя разрывы строк», я буду рад удалить его. Lucas Souza 7 лет назад 0
Вы правы, повторяющиеся вопросы с достаточной разницей в формулировках могут быть полезны для направления людей в нужное место. Поэтому этот вопрос следует сохранить, но оставить помеченным как дубликат. Ben N 7 лет назад 1

1 ответ на вопрос

0
Lucas Souza

При поиске дополнительной информации о переводе строки и текстовых файлах я нашел здесь вопрос в сообществе суперпользователей, который объяснил, что происходит.

Проблема не де проворная, является Notepad из Windows, ( в моем случае Windows, 10, в случае автора другого вопроса Windows, 7 ), которые не recoginize этого типа корма линии, цитируя @Paul который ответил на вопрос Я говорю о:

Блокнот распознает только CR, LF (0x0d, 0x0a), тогда как другие источники могут использовать только CR или только LF.

Теперь я рекомендую использовать в качестве первого текстового редактора WordPad или NotePad ++, которые работают нормально.

В блокноте :

Notepad

В Notepad ++ и WordPad :

NotePad++ WordPad

Другим возможным решением является копирование текста из Блокнота, вставка в Блокнот ++, WordPad, Microsoft Word или любой текстовый редактор, который распознает этот тип переноса строки, а затем копирование его обратно.

Для получения дополнительной информации перейдите к вопросу «Блокнот, игнорирующий переносы строк» .

Actually, the problem is that you're generating wrong line breaks. You program outputs Unix line breaks (only one "Line Feed"/LF character, ASCII code 10, "\n" in Java) while DOS and Windows use CR/LF (two characters, one "Carriage Return", ASCII code 13, escape sequence "\r" and one LF character). Refer to the following question to learn how to use the correct newline characters for your operating system: https://stackoverflow.com/questions/207947/how-do-i-get-a-platform-dependent-new-line-character Gunter Ohrner 5 лет назад 0