1

BufferedOutputStream に 3 回書き込んでいます。

b1 = baos1.toByteArray();  
b2 = baos2.toByteArray();  

bos.write(b1);
bos.write(b2);
bos.write(b1.length);

System.out.println(b1.length);
System.out.println(b2.length);

bos.flush();
bos.close();

別のクラスで書き込まれた値 (b1.length) を取得したいのですが、取得した値は最初の *.println() とは異なります。

System.out.println(aux.length); // The entire stream (b1+b2+b1.length)
System.out.println(aux[aux.length - 1]);

例えば:

Println 1 --> 123744

Println 2 --> 53858

Println 3 --> 177603

プリントイン 4 --> 96

その場合、println1 と println4 は同じサイズを返す必要があります。私が間違っていることは何ですか?

b1.length バイトである 1 バイト (177603-123744-53858 = 1) が書き込まれていることを確認しました。

誰かが最初のバイト配列のサイズを正しく書くのを手伝ってくれますか?

4

3 に答える 3

0

BufferedOutputStream を DataOutputStream にラップし、そのメソッドwrite(byte[])writeInt(int)メソッドを使用します。

于 2014-01-02T01:52:05.483 に答える
0

私はこれを行う問題を解決しました:

bos.write(ByteBuffer.allocate(4).putInt(b2.length).array());

それ以外の:

bos.write(b1.length);

これで機能し、長さを取得できます。

于 2014-01-02T01:39:04.840 に答える