Java 面向流的IO与面向块的IO

Java 面向流的IO与面向块的IO,java,io,nio,Java,Io,Nio,Java有面向流的IO(Java.IO.)和面向块的IO(Java.nio.)。面向块的IO如何提高IO的性能 主要是通过减少复制的需要。由于面向流的API必须将所有内容移动到托管Java变量中,因此系统必须复制您处理的所有数据。当您使用NIO库时,Java可以直接映射到OS I/O页面,而无需进行复制(并处理分配和垃圾收集)。主要是通过减少复制的需要。由于面向流的API必须将所有内容移动到托管Java变量中,因此系统必须复制您处理的所有数据。当您使用NIO库时,Java可以直接映射到OS I/

Java有面向流的IO(Java.IO.)和面向块的IO(Java.nio.)。面向块的IO如何提高IO的性能

主要是通过减少复制的需要。由于面向流的API必须将所有内容移动到托管Java变量中,因此系统必须复制您处理的所有数据。当您使用NIO库时,Java可以直接映射到OS I/O页面,而无需进行复制(并处理分配和垃圾收集)。

主要是通过减少复制的需要。由于面向流的API必须将所有内容移动到托管Java变量中,因此系统必须复制您处理的所有数据。当您使用NIO库时,Java可以直接映射到OS I/O页面,而无需进行复制(并处理分配和垃圾收集)。来自:-

IO与NIO的对比

NIO构造使程序中的I/O比传统I/O更快 其中,I/O操作构成了大量的 处理,希望看到一些差异。例如,如果 应用程序必须使用套接字复制文件或传输字节,使用 Nio有可能获得更快的性能,因为它更接近 操作系统比I/O API更重要。增加字节大小,则差异 变得更为可观。Nio还提供了io中没有的其他功能 API,用于流操作。然而,这是不可能的 用NIO替换IO,因为NIOAPI为 java.io。NIO扩展了本机IO API,引入了新的可能性 使开发人员能够以强大的方式操作流数据

:-

IO与NIO的对比

NIO构造使程序中的I/O比传统I/O更快 其中,I/O操作构成了大量的 处理,希望看到一些差异。例如,如果 应用程序必须使用套接字复制文件或传输字节,使用 Nio有可能获得更快的性能,因为它更接近 操作系统比I/O API更重要。增加字节大小,则差异 变得更为可观。Nio还提供了io中没有的其他功能 API,用于流操作。然而,这是不可能的 用NIO替换IO,因为NIOAPI为 java.io。NIO扩展了本机IO API,引入了新的可能性 使开发人员能够以强大的方式操作流数据


基于流的I/O使用流在数据源/接收器和Java程序之间传输数据。Java程序一次从流中读取或写入一个字节。这种执行I/O操作的方法很慢。新的输入/输出(NIO)解决了旧的基于流的I/O中的低速问题

NIO中,处理用于I/O操作的通道和缓冲区

渠道就像一条小溪。它表示数据源/接收器和用于数据传输的Java程序之间的连接

河道和河流之间有一个区别

  • 流可用于单向数据传输。即,输入 流只能将数据从数据源传输到Java程序; 输出流只能将数据从Java程序传输到数据源 下沉
  • 但是,通道提供双向数据传输设施

您可以使用通道读取数据和写入数据。您可以根据需要获得只读通道、只读通道或读写通道。

基于流的I/O
使用流在数据源/接收器和Java程序之间传输数据。Java程序一次从流中读取或写入一个字节。这种执行I/O操作的方法很慢。新的输入/输出(NIO)解决了旧的基于流的I/O中的低速问题

NIO中,处理用于I/O操作的通道和缓冲区

渠道就像一条小溪。它表示数据源/接收器和用于数据传输的Java程序之间的连接

河道和河流之间有一个区别

  • 流可用于单向数据传输。即,输入 流只能将数据从数据源传输到Java程序; 输出流只能将数据从Java程序传输到数据源 下沉
  • 但是,通道提供双向数据传输设施

您可以使用通道读取数据和写入数据。您可以根据需要获得只读通道、只读通道或读写通道。

它没有解释面向流IO的额外内容会降低性能。它说,流通常(但不一定)比块设备慢,并且通常是间歇性输入的来源。大多数操作系统允许将流置于非阻塞模式,这允许进程检查流上是否有可用的输入,如果在给定时刻没有可用的输入,则不会被卡住。@ChanderShivdasani:-尽管Chyslis已经非常清楚地解释了面向流的API必须将所有内容都移动到托管Java变量中,系统必须复制你处理的所有数据。请在他的之前阅读你的答案:)@ChanderShivdasani:-我建议你阅读我在答案中添加的链接。很有趣!!!它没有解释面向流IO的额外内容会降低性能。它说,流通常(但不一定)比块设备慢,并且通常是间歇性输入的来源。大多数操作系统都允许将流置于非阻塞模式,这允许进程检查流上是否有可用的输入,如果在给定时刻没有可用的输入,则不会被卡住。@ChanderS