2012-01-12 3 views
1

Мне нужно написать строки в ByteArrayOutputStream, но мне нужно написать строки с разбивкой. Я попытался сделать это в качестве примера:Как я могу разбить строку на Java?

out.write("123".getBytes()); 
out.write("\n456".getBytes()); 

Но '\ n' не работает. Пожалуйста, скажите, как я могу это исправить? Или предложите мне альтернативный OutputStream для хранения строк (эта ОС должна позволять использовать разбиение строк) без создания файлов. Спасибо.

+2

Что вы имеете в виду, нарушая? –

+0

Я имею в виду, что каждая строка является другой строкой в ​​файле. – user1134602

+0

Какая операционная система? Если это Windows, вам может понадобиться «\ r \ n» для строки, если вы пишете ее как байты, в зависимости от того, что вы затем пытаетесь прочитать в файле. – Rup

ответ

7
ByteArrayOutputStream stream = ...; 
PrintStream printer = new PrintStream(stream, true); // auto-flush 
printer.println("123"); // writes newline 
printer.print("hello"); // no new line 
printer.print(" world"); 
printer.println(); 

Обратите внимание, что это создаст байт для конкретной платформы. Newlines может быть \n, \r\n или \r. Используемая фактическая последовательность символов указывается в system property line.separator.

+0

@Ted true - I * did * использовать 'autoFlush' =' true' в конструкторе, но это применимо только при написании новых строк. –

+0

Да, я заметил, что после публикации комментария, поэтому я удалил комментарий. –

3

Просто используйте BufferedWriter, он будет управлять разрывами строк для вас (bwinstance.newLine()). Независимо от того, на какой ОС вы работаете.

+0

Отсутствует шаг: вы не можете напрямую перейти от OutputStream к BufferedWriter. У вас уже есть Writer (например, OutputStreamWriter) для буферизации. –

3

Если вы ищете системы независимой новой строки разделителем я рекомендовал бы использовать:

System.getProperty("line.separator"); 

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

Это также идеальный метод, если вы строите строки перед их написанием, так как вам не придется писать каждую строку отдельно.

Смежные вопросы