更高级别的流如何工作?为什么我们在较低级别的流中包含更高级别?较高级别的流从较低级别的流中获取数据(因为它们不能直接访问文件),那么它们如何比较低级别的流更有效?
答案 0 :(得分:2)
每次打包输入或输出流(不要与Java 8 Stream API混淆)时,您都会对该流进行转换,以便在读取它时,处理转换后的数据而不是原始数据。
更高级别的流如何工作?
每个流用于简单目的,例如缓冲,压缩,加密。这不是魔术,它只是做它的工作并将数据传递到较低级别的流上,反之亦然。阅读时。
为什么我们在较低级别的流中包含较高级别?
这是构建更复杂流的最简单方法。
它们如何比低级别流更有效?
这与效率无关(缓冲流除外,旨在最大限度地减少相对昂贵的系统调用次数)
答案 1 :(得分:0)
您已经回答了第一个问题。我们将较低级别的流传递给更高级别流的构造函数,因为高级流需要引用较低级别的流才能访问数据。
关于第二个问题,通过最小化对包含的较低级别流的访问,可以提高高级别流的效率。例如,BufferedOutputStream通过维护缓冲区来最小化对它包装的流的写入。
答案 2 :(得分:0)
更高级别的流不仅仅是......更高级别。它们为实际任务提供了更实用的界面。例如,您不必逐字节地检查新行字符,而只需读取整行。在较高级别的流下面调用较低级别的方法,这就是为什么你必须传递一个方法来操作它们。
答案 3 :(得分:0)
考虑一个例子来解释。最终一切都应该作为字节传递。对于程序员来说,在他的程序中总是很难处理字节。因此,高级别流将进入图像,您只需传递元素和低级流完成的内部工作。
My program .....>High Level Stream ....> Low level Stream ......>(bytes)....> external/other target