Java具有面向流的IO(java.io. )和面向块的IO(java.nio。)。面向块的IO如何提高IO的性能?
答案 0 :(得分:6)
主要通过减少复制的需要。由于面向流的API必须将所有内容移动到托管Java变量中,因此系统必须复制您处理的所有数据。当您使用NIO库时,Java可以直接映射到OS I / O页面,而无需进行复制(并处理分配和垃圾回收)。
答案 1 :(得分:4)
基于流的I / O 使用流在数据源/接收器和Java程序之间传输数据。 Java程序一次一个字节地读取或写入流。这种执行I / O操作的方法很慢。新输入/输出(NIO)解决了旧的基于流的I / O中的慢速问题。
在 NIO 中,您可以处理频道和缓冲区进行I / O操作。
频道就像一条小溪。它表示数据源/接收器和用于数据传输的Java程序之间的连接。
频道与流之间存在一个区别。
您可以使用通道读取数据以及写入数据。您可以根据需要获取只读通道,只写通道或读写通道。
现在,您可以通过上面的图片轻松了解io和nio之间的区别。 More detail here.
答案 2 :(得分:2)
来自 Source : -
IO与NIO
NIO构造使I / O比传统I / O更快。在一个程序中 其中I / O操作构成了大量的 处理,期望看到一些差异。例如,如果一个 应用程序必须使用套接字复制文件或传输字节 Nio可以获得更快的性能,因为它更接近 操作系统比I / O API。增加字节大小,差异 变得更加明显。 Nio还提供io以外的其他功能 API,用于流操作。但是,这是不可能的 用NIO代替IO,因为NIO API增加了功能 java.io. NIO扩展了本机IO API,引入了新的可能性 让开发人员以强大的方式操作流数据。