2012-01-12 7 views
1

文字列をByteArrayOutputStreamに書き込む必要がありますが、文字列を分割して書き込む必要があります。私は例としてそれをしようとしました:Javaで文字列を分割するにはどうすればよいですか?

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

しかし、 '\ n'は動作しません。どうしたらいいですか?または、ファイルを作成せずに文字列を格納するための代わりのOutputStream(このOSは行の折れ線を使用する必要があります)を提案します。ありがとうございました。

+2

壊れたとはどういう意味ですか? –

+0

私は、各文字列がファイル上の別の行であることを意味します。 – user1134602

+0

どのOSですか? 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(); 

プラットフォーム固有のバイトが生成されることに注意してください。改行は、\n,\r\nまたは\rとすることができます。 使用される実際の文字シーケンスはsystem property line.separatorで指定されています。

+0

@Ted true - コンストラクタで 'autoFlush' =' true'を使用しましたが、新しい行が書き込まれたときのみ適用されます。 –

+0

ええ、私はコメントを投稿した後に気づいたので、コメントを削除しました。 –

3

BufferedWriterを使用すると、改行が管理されます(bwinstance.newLine())。実行しているOSに関係なく

+0

ステップがありません:OutputStreamからBufferedWriterに直接移動することはできません。バッファリングするWriter(OutputStreamWriterなど)を既に用意しておく必要があります。 –

3

あなたは、私が使用することをお勧めしますシステムの独立した改行区切りを探している場合:

System.getProperty("line.separator"); 

ではなく毎回getProperty()を呼び出して、私はまた、適切にアクセスできる変数にこの値を格納します。

文字列を作成する前に文字列を作成するのが理想的な方法です。この方法では、各行を別々に書く必要がなくなります。

関連する問題