繁体   English   中英

Java:解释了流和 I/O 流之间的区别

[英]Java: Difference between Streams and I/O stream explained

我正在寻找关于 Java 8 中的“新”流与我们之前在 Java 7 中使用的“旧”I/O 流之间区别的一个很好的解释。对于没有任何函数式编程知识的人来说,很难理解这些是完全不同的东西,尤其是因为名称相同。 我知道 Stream API 在某些方面是全新的,甚至是革命性的,但在我天真的想法中,在这两种情况下,我们都处理“事物”的序列,无论是字节、数据还是对象......

有人可以提供一个很好的解释吗?

它彼此无关,我同意,在“新”流到来之前,IO 流有他们的名字是不幸的。 I/O 流旨在连接到外部资源,主要是文件,但也有其他资源。 新的 Streams 用于函数式编程,应单独处理。

但实际上您可以同时使用这两个概念。 例如, BufferedReader 有一个lines方法,它将文件(或其他资源)的行作为字符串流返回。

在“流”方面没有区别。 Stream 是抽象短语,表示具有源和目的地的事物。 更重要的是它是代表数据序列的东西。

就这两种机制而言,存在很多差异。 例如,Java i/o 流让您只能读取和写入数据。 如果您想处理来自该流的数据,则没有内置的机制。 在 Java 8 流中,还有其他处理的可能性,如映射/过滤器等。

流概念图

让我们来看看我的照片。

在此处输入图片说明

3 个相关概念SourceDestinationElement (由字母“e”表示),其中

  • 目标可以是文件、网络连接、管道、内存缓冲区等。
  • 一个元素只是一个简单的数据,一个由一大块元素组成

什么时候用什么?

I/O 流用于从源读取内容,或将内容写入目标。 那就是,简单:-)

Java 8 中 Stream 的新概念与 I/O 流无关 它的目的是允许您以声明方式操作数据集合。 通过数据收集,我的意思是存储在扩展Collection接口的任何对象中的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM