Stream 什么是小溪?
编程世界中的流是什么?我们为什么需要它Stream 什么是小溪?,stream,terminology,Stream,Terminology,编程世界中的流是什么?我们为什么需要它 如果可能的话,请用一个比喻来解释。一个流已经是一个比喻,一个比喻,所以真的没有必要再提供另一个。你可以把它想象成一个有水流的管道,水实际上是数据,管道就是流。如果水流是双向的,我想这是一种双向管道。它基本上是一种常见的抽象,放在一个或两个方向上有数据流或数据序列的事物上 在C++语言、VB.NET、C++、java等语言中,流隐喻被用于很多事物。有文件流,您可以在其中打开一个文件,并可以从该文件流中连续读取或写入该文件;存在网络流,其中对流的读取和写入从底
如果可能的话,请用一个比喻来解释。一个流已经是一个比喻,一个比喻,所以真的没有必要再提供另一个。你可以把它想象成一个有水流的管道,水实际上是数据,管道就是流。如果水流是双向的,我想这是一种双向管道。它基本上是一种常见的抽象,放在一个或两个方向上有数据流或数据序列的事物上 在C++语言、VB.NET、C++、java等语言中,流隐喻被用于很多事物。有文件流,您可以在其中打开一个文件,并可以从该文件流中连续读取或写入该文件;存在网络流,其中对流的读取和写入从底层已建立的网络连接进行读取和写入。例如,仅用于写入的流通常称为输出流,类似地,仅用于读取的流称为输入流 流可以执行数据的转换或编码(例如,.Net中的一个将吃掉SSL协商数据并对您隐藏;TelnetStream可能会对您隐藏Telnet协商,但提供对数据的访问;Java中的一个允许您写入zip存档中的文件,而不必担心zip文件格式的内部 您可能会发现另一个常见的东西是允许您编写字符串而不是字节的文本流,或者一些语言提供允许您编写基本类型的二进制流。在文本流中,您会发现一个常见的东西是字符编码,您应该知道这一点 一些流也支持随机访问,例如,另一方面,由于明显的原因,网络流不支持
- 对.Net中的流进行了很好的概述
- Sun还概述了他们的一般课程和课程
- 在C++中,这里是(输入流)、(输出流)和(双向流)文档。
类UNIX操作系统还支持具有程序输入和输出的流模型,如前所述。流表示对象序列(通常是字节,但不一定是字节),可以按顺序访问这些对象。流上的典型操作:
- 读取一个字节。下次读取时,将获得下一个字节,依此类推
- 将流中的几个字节读入数组
- seek(移动流中的当前位置,以便下次读取时从新位置获取字节)
- 写入一个字节
- 将数组中的几个字节写入流
- 从流中跳过字节(这类似于读取,但您忽略了数据。或者,如果您喜欢,它类似于查找,但只能前进。)
- 将字节向后推到输入流中(这类似于读取时的“撤消”-您将一些字节向后推到流中,以便下次读取时,您将看到这些字节。这对解析器偶尔有用,如下所示:
- peek(在不读取字节的情况下查看字节,以便它们仍然存在于稍后要读取的流中)
不过,正如IRBMe所说,最好从流提供的操作(不同的实现不同,但有很多共同点)来考虑流,而不是通过物理类比“。当您开始连接上游适配器时,您可以将其视为一个带有传入和传出传送带的盒子,连接到其他流,然后盒子对数据执行一些转换(压缩数据,或将UNIX换行器更改为DOS换行器,或其他任何操作)管道是对这个比喻的另一个彻底的检验:在这里,你可以创建一对流,这样你在其中写入的任何东西都可以从另一条流中读出除了上面提到的东西之外,还有一种不同类型的流——如Scheme或Haskell等函数式编程语言所定义的——一种可能是无限的数据结构,由一些函数按需生成。另一个类比:你不能在流中游泳,这就是为什么你只需要下一位、字节、stri从流中删除或删除对象,而