Как написать новую строку в Java FileOutputStream

Я хочу написать новую строку, используя FileOutputStream; Я пробовал следующие подходы, но ни один из них не работает:

encfileout.write('\n');
encfileout.write("\n".getbytes());
encfileout.write(System.getProperty("line.separator").getBytes());

person Pavan Patidar    schedule 16.06.2014    source источник
comment
Определить не работает.   -  person Christoffer Hammarström    schedule 16.06.2014
comment
он не пишет новую строку   -  person Pavan Patidar    schedule 16.06.2014
comment
@PavanPatidar: пишет новую строку. Для уверенности.   -  person Martijn Courteaux    schedule 16.06.2014
comment
Попробуйте выполнить encfileout.write(Fant.getbytes()); encfileout.write(\n.getbytes()); encfileout.write(astic.getbytes()); Если вы видите все слово в одной строке, проблема подтверждается. В частности, encfileout.write(System.getProperty(line.separator).getbytes()); должно сработать.   -  person Teddy    schedule 16.06.2014
comment
@Teddy, он работает на локальном хосте, но когда я развертываю его на своем сервере, он не работает.   -  person Pavan Patidar    schedule 16.06.2014
comment
Это может быть проблема со средством просмотра... Попробуйте открыть файл в EditPlus или Notepad++. Блокнот Windows может не распознавать перевод строки другой операционной системы. В какой программе вы сейчас просматриваете файл?   -  person Teddy    schedule 16.06.2014
comment
@Teddy: Спасибо, вы правы, проблема с просмотром, notepad ++ правильно показывает мои данные. Еще раз спасибо, что обратили мое внимание.   -  person Pavan Patidar    schedule 17.06.2014
comment
@PavanPatidar Я добавил последний комментарий в качестве ответа ... вы можете принять его, если он решил вашу проблему. Если вы примете его, этот вопрос будет помечен как ответ.   -  person Teddy    schedule 17.06.2014


Ответы (4)


Это может быть проблема со средством просмотра... Попробуйте открыть файл в EditPlus или Notepad++. Блокнот Windows может не распознавать перевод строки другой операционной системы. В какой программе вы сейчас просматриваете файл?

person Teddy    schedule 16.06.2014

Это должно работать. Вероятно, вы забыли позвонить encfileout.flush().

Однако это не предпочтительный способ написания текстов. Вы должны обернуть свой выходной поток PrintWriter и наслаждаться его println() методами:

PrintWriter writer = new PrintWriter(new OutputStreamWriter(encfileout, charset));

В качестве альтернативы вы можете использовать FileWriter вместо FileOutputStream с самого начала:

FileWriter fw = new FileWriter("myfile");
PrintWriter writer = new PrintWriter(fw);

Теперь просто позвони

writer.println();

И не забудьте позвонить flush() и close(), когда закончите работу.

person AlexR    schedule 16.06.2014
comment
Надеюсь, вы не возражаете, что я добавил отсутствующий параметр charset. - person Christoffer Hammarström; 16.06.2014
comment
@Pavan Не могли бы вы объяснить, почему это не то, что вы ищете, чтобы ответ можно было изменить / предоставить другой ответ? - person Edd; 16.06.2014
comment
FileWriter и PrintWriter многофункциональны. Функция println() Printwriter отлично работает!!! - person Amol Dixit; 17.01.2018

Чтобы добавить разрыв строки, используйте fileOutputStream.write(10);, поскольку десятичное значение 10 представляет новую строку в ASCII.

person SHASHIKANTH GAJJELLI    schedule 03.08.2020

person    schedule
comment
Пожалуйста, рассмотрите возможность добавления некоторой формы объяснения к вашему ответу. Ответы, содержащие только код, обычно не приветствуются. - person Axe319; 06.10.2020