ByteArrayOutputStream
和BufferedOutputStream
都通过将数据放入内存中的数组来进行缓冲。所以我的问题是ByteArrayOutputStream和BufferedOutputStream之间的区别
- 这两者之间有什么区别。
- 当使用
ByteArrayOutputStream
以及何时使用BufferedOutputStream
有人能帮助我在上面两个问题,因为我对这个困惑。
ByteArrayOutputStream
和BufferedOutputStream
都通过将数据放入内存中的数组来进行缓冲。所以我的问题是ByteArrayOutputStream和BufferedOutputStream之间的区别
ByteArrayOutputStream
以及何时使用BufferedOutputStream
有人能帮助我在上面两个问题,因为我对这个困惑。
只要看看的Javadoc:
此类实现,其中的数据被写入一个字节数组的输出流。
该类实现缓冲的输出流。通过设置这样的输出流,应用程序可以将字节写入底层输出流,而不必为写入的每个字节调用底层系统。
所以,那些实际上有两个非常不同的东西:
这就是这一切!
如果您想体验不同的行为:创建一个写入文件的缓冲区和一个数组。然后只是继续推送字节到每一个。阵列一会在某个点引起内存问题,另一个可能不会停止,直到所有磁盘空间用完。
ByteArrayOutputStream
将字节写入内存中的字节数组。不适用于任何其他目标,如文件或网络套接字。写入数据后,您可以通过调用toByteArray()
来获取字节数组。
BufferedOutputStream
包装另一个,底层OutputStream
并提供该底层流的缓冲,以使I/O操作更有效。基础流可以是任何种类的OutputStream
,例如写入文件或网络套接字的流。
为什么您可能想要使用缓冲:将大块数据写入文件系统比逐字节写入效率更高。如果您的程序需要写入许多小块数据,首先将这些小块收集到缓冲区中,然后将整个缓冲区一次写入磁盘会更有效。这是BufferedOutputStream
自动为你做的。
这个问题是完全不同的,它说“在围绕ByteArrayOutputStream包装BufferedOutputStream而不是仅仅使用ByteArrrayOutputStream本身有什么优势吗?”我读了这个问题,但没有什么请再次检查 –
只有在interner上发现的差异是BufferedOutputStream将数据写入另一个流。 ByteArrayOutputStream将数据写入字节数组。 –
请你能解释一下吗? –