- PR -

別々のストリームから読み込んだbyte配列の連結について

1
投稿者投稿内容
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2005-11-30 14:59
別々のストリームから読み込んだbyte配列を、うまく連結する方法はございますでしょうか?

newStrm = strm1 + strm2 + strm3

で、いいのでしょうか?
少々難しく考えているところがあるので、ヒントをいただければと思います。

[ メッセージ編集済み 編集者: NV 編集日時 2005-11-30 15:02 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-30 15:30
「別々のストリームから読み込む」と「byte配列の連結」を別々に考えてはいかがでしょうか。
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2005-11-30 15:30
自己レスです。

おそらく下記で行ける気がします。

//読込バイト配列
byte[] bArr = new byte[256];

//サイズ取得
size1 = strm1.available();
size2 = strm2.available();
size3 = strm3.available();

//当然Loop処理
newStrm.read(bArr, 0 ,size1);
newStrm.read(bArr, size1, size2);
newStrm.read(bArr, size1+size2 ,size3);

いいのかな?おそらく。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-30 15:38
>おそらく下記で行ける気がします。
順序とか関係ないのであればいけそうですね。

[ メッセージ編集済み 編集者: インギ 編集日時 2005-11-30 15:39 ]
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2005-11-30 15:54
jav.io.SequenceInputStreamを使いましょう。

コード:
InputStream[] streams = new InputStream[] { strm1, strm2, strm3 };
InputStream in = new SequenceInputStream(
  Collections.enumeration(Arrays.asList(streams)));


後は普通にinから読み込んで行くだけです。
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2005-11-30 17:04
御両方、アドバイスありがとうございます。

jav.io.SequenceInputStream等という奥義があったのですね。
知識の広さが羨ましいです。

大変助かりました。
1

スキルアップ/キャリアアップ(JOB@IT)