繁体   English   中英

Java IO的Streams是什么意思

[英]What is meant by Streams w.r.t Java IO

我很难看清流在IO方面的确切含义。 我将流想象为来自文件,套接字或任何其他数据源的连续数据流。 那是对的吗? 但是后来我对我们的Java程序对流的反应感到困惑,因为当我们编写任何Java代码时,请说:

Customer getCustomer(Customer customer)

上面的Java代码难道不希望整个对象在处理之前就存在吗? 现在假设我们正在从流中读取类似

FileInputStream in = new FileInputStream("abc.txt")
in.read();

in.read()不希望整个文件都存在于要处理的内存中。 如果是的话,那它怎么会变成溪流呢? 我们为什么称它们为流? 他们会在读取数据时进行处理吗?

读取hadoop流时,也有类似的困惑,看起来它们的含义完全不同。

“流”一词在不同的上下文中用于不同的事物。 但是,您特别要问的是I / O中的流,即InputStreamOutputStream

我将流想象为来自文件,套接字或任何其他数据源的连续数据流。 那是对的吗?

是的,流是字节序列的源,它可以来自文件,套接字等。

关于getCustomer :您需要具有一个Customer对象才能传递给该方法。 但是,调用方法,传递对象和获取对象返回实际上与流没有任何关系。

in.read()不希望整个文件都存在于要处理的内存中。

FileInputStream是一个代表流的对象。 知道如何从文件中读取字节的东西。

流从根本上来说不是一种特殊的对象。 并不是有类,对象和流。 流只是使用标准Java OO编程功能(类和对象)实现的概念。

上面的Java代码难道不希望整个对象在处理之前就存在吗?

是。 但这不是溪流。

in.read()不希望整个文件都存在于要处理的内存中。

没有。

如果是

不是。

那怎么会是溪流呢?

它是。

我们为什么称它们为流? 他们会在读取数据时进行处理吗?

是。

类似的困惑

这里没有混乱,除了您自己将方法调用与I / O流进行比较(将苹果橙子进行比较)时感到困惑之外。

在阅读hadoop流时,看起来它们完全具有不同的含义。

很有可能。

I / O流代表输入源或输出目的地。 流可以表示许多不同种类的源和目标,包括磁盘文件,设备,其他程序和内存阵列。

流支持许多不同类型的数据,包括简单字节,原始数据类型,本地化字符和对象。 有些流只是传递数据。 其他人则以有用的方式操纵和转换数据。

无论它们在内部如何工作,所有流都向使用它们的程序提供相同的简单模型:流是数据序列。

在Java中,有两种流(字节流和字符流),它们在源和目标之间传输数据的方式不同。

希望这能回答您的问题。 如果您需要任何进一步的信息,请告诉我。

这里 ..

流是元素的自由流动序列。 它们不保存任何存储空间,因为这种责任在于数组,列表和集合之类的集合。 每个流都从数据源开始,建立管道,通过管道处理元素,最后进行终端操作。 它们使我们能够并行执行繁重操作带来的负载,而无需编写任何并行代码。 Java 8中引入了新的包java.util.stream来处理此功能。

流遵循通用的管道和过滤器软件模式。 创建一个流过数据事件的管道,并在各个事件在管道中移动时对其应用各种中间操作。 当流水线因终端操作而中断时,该流被称为终止。 请记住,流应该是不可变的-在管道中进行任何修改集合的尝试都会引发ConcurrentModifiedException异常。

暂无
暂无

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

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