2012-02-08 5 views
0

私は、SocketのOutputStreamに書き込む必要がある2つのバイト配列を持っています。今私はこのような何か:それは代わりに、最初の二つの配列(例えばSystem.arraycopy()付き)を組み合わせただけにして一度os.write(combinedArray)を呼び出すために、おそらくより良いかどう2バイト配列をOutputStreamに書き込むにはどうすればよいですか?

byte[] arr1, arr2; 
OutputStream os; 
os.write(arr1); 
os.write(arr2); 

を私は不思議でしたか?

それが問題なら、Androidの観点から質問しています。

+0

'OutputStream'の実装に依存します。 –

+0

これで、BufferedOutputStreamは透過的に(少なくとも2つの配列がバッファサイズよりも小さい場合)、それについてもう少し考えています。 –

+0

Hmm。なぜdownvote? – yydl

答えて

0

私は別に []技術的には、あなたがなBufferedOutputStreamであなたののOutputStreamをラッピングしたほうが良いと各バイトを書きたいと思います。あなたが書き込みを終えたら、と呼んでください。bufferedOutputStream.flush(); BufferedOutputStreamは、別々のバイト配列で何回書き込んでも、内部バッファがいっぱいになったときに自動的に書き込みます。flushを呼び出すと、すべてのデータが確実に書き込まれます。基礎となるBufferedOutputStreamは、バイト配列を論理的に結合するのが最も効率的なときを決定するので、余分なロジックでコードが乱雑になることはありません。

+0

ちょうど2バイトの配列でさえ? – yydl

+0

私はそれが配列の長さ、ストリームを開いたままにするか、書き込みの間に閉じようとするか、そして遠端でデータが到着するのを待っている追加のプロセスがあるかどうかに依存すると思います。あなたがファイルに書き込んでいるのであれば、そうでないかもしれません。あなたがソケットに書いているなら、多分。 – CodeBlind

関連する問題