Java中基于通道的I / O和基于流的I / O有什么区别?


21

基于流的输入和基于通道的输入之间有什么区别?Java API既在“ java.io”包中提供了基于流的内容,又在“ java.nio”包中提供了基于通道的内容。两者中哪一个在性能上更好并且减少了运行时错误?


您是否在Stack Overflow上检查了'nio'标签维基“ NIO代表'New I / O'。它是JDK 1.4中java.nio包中引入的。它包含几个元素:...”
gnat 2012年

1
10年前,这是一个好问题…… 简短的答案取决于它,关于何时使用哪种技术,有大量详尽的文档,两者仍然存在,因为它们在不同方面都有所长。详细回答 Google提供了您需要了解的所有信息。

我认为这是一个很好的门户问题。OP是当今幸运的10,000个之一
Gary Rowe 2012年

根据stackoverflow.com/questions/2810156/concepts-channel-vs-stream的说明,通道是面向消息的,而流是字节的,并且可能不知道如何划分消息。另一个区别是,通道存储消息而流不存储消息。
inf3rno 2014年

Answers:


13

请参阅此Oracle博客文章以获得良好的概述

也不要忽略阅读Java 7的NIO.2 API!

在性能等方面,答案很好,就是“取决于”。它取决于您的I / O的特性,例如,它的大小,它的“形状”,是网络,磁盘,内存还是...。


8
在这里,链接到存档:web.archive.org/web/20140528182031/https://blogs.oracle.com/slc/... -这就是为什么在这里的答案应该能够工作,而他们的链接顺便说一句
piegames
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.