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

时间:2016-09-17 19:05:22

标签: java java-8 inputstream java-stream

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

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

3 个答案:

答案 0 :(得分:2)

它与彼此无关,我同意,IO Streams在" new"之前有他们的名字,这是运气不好。溪流已经到来。 I / O流意味着与外部资源(主要是文件)的连接,也包括其他资源。新的Streams用于函数式编程,应该单独处理。

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

答案 1 :(得分:1)

流概念的图片

让我们看一下我的照片。

enter image description here

三个与概念有关的来源目标元素(以字母'e表示'),

  • 目标可以通过文件,网络连接,管道,内存缓冲区等来实现。
  • 元素只是一条数据,而则由大量元素组成

什么时候使用什么?

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

Java 8中Stream的新概念与I / O流无关。。其目的是允许您以声明的方式操作数据集合。所谓数据收集,是指存储在扩展Collection接口的任何对象内部的数据。

答案 2 :(得分:0)

就“流”而言,没有区别。流是抽象短语,意味着具有源和目的地的东西。更重要的是它代表了数据序列。

就这两种机制而言,存在很多差异。例如,Java i / o流允许您只读取和写入数据。如果要处理来自该流的数据,则没有为此构建机制。在Java 8流中,还有mapig / filter等处理的其他可能性。

相关问题