Miron Asked:2020-12-15 22:22:52 +0000 UTC2020-12-15 22:22:52 +0000 UTC 2020-12-15 22:22:52 +0000 UTC ByteArrayInputStream 和 ByteArrayOutputStream 有什么区别? 772 似乎您可以同时写入两者,似乎您可以从两者中读取。他们有什么区别? java 1 个回答 Voted Best Answer Miron 2020-12-15T22:22:52Z2020-12-15T22:22:52Z ByteArrayInputStream让我们从您可以一次性写入信息这一事实开始- 使用构造函数。您ByteArrayOutputStream可以使用该方法的两种变体(重载)尽可能多地写入write: write(byte[] array, int start, int limit) (记录数组数组的限制元素,从id等于start开始) 和 write(int element) (一个字节的记录 - 元素) 还值得注意的是,ByteArrayOutputStream 有一个方法,它在其他输出流的内容上调用 write 方法: writeTo(OutputStream out) ByteArrayInputStream没有这样的方法。但是,没有人会费心在其他输出流上对流的内容调用 write 方法ByteArrayInputStream。重要的是,两个流都可以重置 -mark(int position)使用reset(). 在 ByteArrayOutputStream 的情况下,数组摩擦,与 ByteArrayInputStream - 只有信标移动读取,您可以再次读取数组。现在让我们继续获取写入的字节。您ByteArrayInputStream可以使用该方法的两种变体(重载)来获得它read: write(byte[] array, int start, int limit) (将限制元素放入数组中,从 id 等于 start 开始) 和 read() (读取下一个字节) 您还可以使用以下方法跳过第 n 个字节skip: skip(long n) 一切都ByteArrayOutputStream更加木制,他使用以下方法阅读: toByteArray() (我们得到一个字节数组) toString() (将字节数组直接转换为字符串) 也就是说,我们只能获取完整的内容,而不是碎片。 在 ByteArrayInputStream 中获取流的长度(您可以阅读多少!)是使用方法完成的available(),而在 ByteArrayOutputStream(当然,这是总长度)中 - 使用方法size()。 两个流都不需要在下班后关闭。 以下是不同之处。以及使用哪一个 - 根据我上面给出的数据,决定每个班级的圣岛。
ByteArrayInputStream让我们从您可以一次性写入信息这一事实开始- 使用构造函数。您ByteArrayOutputStream可以使用该方法的两种变体(重载)尽可能多地写入write:(记录数组数组的限制元素,从id等于start开始)
和
(一个字节的记录 - 元素)
还值得注意的是,ByteArrayOutputStream 有一个方法,它在其他输出流的内容上调用 write 方法:
ByteArrayInputStream没有这样的方法。但是,没有人会费心在其他输出流上对流的内容调用 write 方法ByteArrayInputStream。重要的是,两个流都可以重置 -mark(int position)使用reset(). 在 ByteArrayOutputStream 的情况下,数组摩擦,与 ByteArrayInputStream - 只有信标移动读取,您可以再次读取数组。现在让我们继续获取写入的字节。您ByteArrayInputStream可以使用该方法的两种变体(重载)来获得它read:(将限制元素放入数组中,从 id 等于 start 开始)
和
(读取下一个字节)
您还可以使用以下方法跳过第 n 个字节
skip:一切都
ByteArrayOutputStream更加木制,他使用以下方法阅读:(我们得到一个字节数组)
(将字节数组直接转换为字符串)
也就是说,我们只能获取完整的内容,而不是碎片。
在 ByteArrayInputStream 中获取流的长度(您可以阅读多少!)是使用方法完成的
available(),而在 ByteArrayOutputStream(当然,这是总长度)中 - 使用方法size()。两个流都不需要在下班后关闭。
以下是不同之处。以及使用哪一个 - 根据我上面给出的数据,决定每个班级的圣岛。