如何在Java中同时使用ByteArrayOutputStream和DataOutputStream?

我在这里遇到了一个很大的问题,我认为这是因为我不太明白我应该如何使用Java提供的API。

我需要将 a 和 a 写进 .intbyte[]byte[]

我想过使用a来解决和的数据写入,并且能够将其放入字节数组中,我应该使用方法DataOutputStreamwriteInt(int i)write(byte[] b)ByteArrayOutputStreamtoByteArray().

我知道这个类使用包装器模式,所以我有两个选择:

DataOutputStream w = new DataOutputStream(new ByteArrayOutputStream());

ByteArrayOutputStream w = new ByteArrayOutputStream(new DataOutputStream());

但在这两种情况下,我都“松散”了一种方法。在第一种情况下,我无法访问该方法,在第二种情况下,我无法访问该方法。toByteArray()writeInt()

我应该如何一起使用这些类?


答案 1

喜欢这个:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream w = new DataOutputStream(baos);

w.writeInt(100);
w.write(byteArray);

w.flush();

byte[] result = baos.toByteArray();

实际上,您的第二个版本根本无法正常工作。 需要一个实际的目标流来写入数据。你不能做.实际上没有任何这样的构造函数。DataOutputStreamnew DataOutputStream()


答案 2

你能不能做一个变量来保持ByteArrayOutputStream,并将其传递到DataOutputStream中。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeInt(1);
byte[] result = dos.toByteArray();

推荐