如何同时使用ByteArrayOutputStream和DataOutputStream(Java)
问题内容:
我在这里遇到了一个很大的问题,我认为这是因为我不太了解如何使用Java提供的API。
我需要写一个int
和一个byte[]
到一个byte[]
我想到了使用a DataOutputStream
来解决用writeInt(int i)
和编写的数据write(byte[] b)
,并且能够将其放入字节数组中,我应该使用ByteArrayOutputStream
methodtoByteArray().
我知道此类使用Wrapper模式,所以我有两个选择:
DataOutputStream w = new DataOutputStream(new ByteArrayOutputStream());
要么
ByteArrayOutputStream w = new ByteArrayOutputStream(new DataOutputStream());
但在两种情况下,我都“松散”了一种方法。在第一种情况下,我无法访问该toByteArray()
方法,在第二种情况下,我无法访问该writeInt()
方法。
我应该如何一起使用此类?
问题答案:
像这样:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream w = new DataOutputStream(baos);
w.writeInt(100);
w.write(byteArray);
w.flush();
byte[] result = baos.toByteArray();
实际上,您的第二个版本根本无法使用。DataOutputStream
需要在其中写入数据的实际目标流。你做不到new DataOutputStream()
。实际上没有像这样的构造函数。