您好我使用以下代码将我的对象转换为输入流。但我实际上想将我的对象转换为BufferedInputStream。我应该对我的代码做些什么改变?
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.flush();
oos.close();
InputStream is = new ByteArrayInputStream(baos.toByteArray());
答案 0 :(得分:0)
BufferedInputStream在构造函数中使用InputStream,因此您可以使用:
BufferedInputStream bIn = new BufferedInputStream(is);
BufferedInputStream将功能添加到另一个输入流 - 即缓冲输入并支持标记和重置方法的功能。创建BufferedInputStream时,会创建一个内部缓冲区数组。当读取或跳过来自流的字节时,内部缓冲区根据需要从包含的输入流中重新填充,一次多个字节。标记操作会记住输入流中的一个点,并且重置操作会导致在从包含的输入流中获取新字节之前重新读取自最近标记操作以来读取的所有字节。
答案 1 :(得分:0)
包裹它:
new BufferedInputStream(new ByteArrayInputStream(baos.toByteArray()))
答案 2 :(得分:0)
你确定需要转换吗?
BufferedInputStream用于缓冲字节,以减少外部I / O操作的调用量。由于ByteArrayInputStream已将其数据保存在字节数组中,因此将其包装在BufferedInputStream中不会减少I / O操作的调用(没有),但只会增加将字节从数组复制到缓冲区的开销。