在java开发过程中什么时候使用ByteArrayInputStream和ByteArrayOuitputStream?

来源:互联网 发布:淘宝怎么看确认收货 编辑:程序博客网 时间:2024/04/30 10:32

这两个流的作用在于:用IO流的方式来完成对字节数组的读写。

什么是内存虚拟文件或者内存映像文件?

他们是将一块内存虚拟成一个硬盘上的文件,原来该写到硬盘文件上的内容会被写到这个内存中,原来改从一个硬盘文件上读取内容可以改为从内存中直接读取。(如果在程序运行过程中药产生过一些临时文件,就可以使用虚拟文件的方式来实现,不需要访问硬盘,而是直接访问内存)


常见的应用:比如,我们的程序需要将一台计算机的屏幕图像通过网络不断地传送到另外的计算机上,为了节省网络带宽,我们需要将一副屏幕图像进行压缩后,在通过网络发送出去。如果没有内存虚拟文件,我们需要将一台计算机的屏幕图像的像素数据写入到硬盘上的临时文件,再以这个文件作为输入流对象去调用那个压缩函数,接着又从压缩函数生成的压缩文件中读取压缩后的数据,在通过网络发送出去,最后删除压缩前后生成的两个临时文件。这个效率非常低。


ByteArrayInputStream和ByteArrayOutputStream两个类可以实现类似内存虚拟文件的功能,我们将图像所有的像素数据保存在一个数组中,然后根据数组创建一个ByteArrayInputStream流对象,同时创建一个用于保存压缩结果的ByteArrayOutputyStream流对象,将这两个对象作为参数传递给压缩函数,最后从ByteArrayOutPutStream流对象中返回包含有压缩结果的数组。

0 0