如何同时使用ByteArrayOutputStream和DataOutputStream(Java)

Man*_*áoz 11 java wrapper dataoutputstream bytearrayoutputstream

我在这里遇到了很多问题,我认为这是因为我不太了解如何使用Java提供的API.

我需要写一个intbyte[]一个byte[]

我想用a DataOutputStream来解决数据写入writeInt(int i)write(byte[] b),并且能够把它放到一个字节数组中,我应该使用ByteArrayOutputStream方法toByteArray().

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

DataOutputStream w = new DataOutputStream(new ByteArrayOutputStream());
Run Code Online (Sandbox Code Playgroud)

要么

ByteArrayOutputStream w = new ByteArrayOutputStream(new DataOutputStream());
Run Code Online (Sandbox Code Playgroud)

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

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

Mih*_*der 38

像这样:

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

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

w.flush();

byte[] result = baos.toByteArray();
Run Code Online (Sandbox Code Playgroud)

实际上你的第二个版本根本不起作用.DataOutputStream需要一个实际的目标流来写入数据.你做不到new DataOutputStream().实际上并没有像这样的构造函数.