流的概念(来自MSDN)

本文来源

定义

提供字节序列的一般视图。Provides a generic view of a sequence of bytes.

流涉及三个基本操作

Streams involve three fundamental operations:

  1. 可以读取流(You can read from streams.)。 读取是从流到数据结构(如字节数组)的数据传输。
  2. 可以写入流(You can write to streams.)。 写入是从数据结构到流的数据传输。
  3. 流可以支持查找(Streams can support seeking.)。 查找是对流内的当前位置进行的查询和修改。 查找功能取决于流具有的后备存储区类型。 例如,网络流没有当前位置的统一概念,因此一般不支持查找。

Stream 是所有流的抽象基类。

Stream is the abstract base class of all streams.

流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。

A stream is an abstraction of a sequence of bytes, such as a file, an input/output device, an inter-process communication pipe, or a TCP/IP socket.

Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。

根据基础数据源或储存库,流可能只支持这些功能中的一部分。 通过使用 CanReadCanWrite 和 CanSeek 属性,应用程序可以查询流的功能。

Read 和 Write 方法读写各种不同格式的数据。 对于支持查找的流,使用 Seek 和 SetLength 方法以及 Position 和 Length 属性可查询和修改流的当前位置和长度。

有些流实现执行基础数据的本地缓冲以提高性能。 对于这样的流,Flush 方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。

在 Stream 调用 Close 可清空任何缓存的数据,从本质上为您调用 Flush。 Close 还释放操作系统资源(如文件句柄、网络连接或用于任何内部缓冲的内存)。BufferedStream 类提供了将一个经过缓冲的流环绕另一个流的功能,以便提高读写性能。

如果需要不带后备存储区(即位存储桶)的流,请使用 Null

对实现者的说明

在实现 Stream 的派生类时,必须提供 Read 和 Write 方法的实现。 异步方法 BeginReadEndReadBeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。 同样,Read 和 Write 的实现也将与异步方法一起正常工作。 ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组,然后调用 Read 和 Write 的实现。 当从Stream 派生时,如果有内部字节缓冲区,则强烈建议重写这些方法以访问内部缓冲区,这样性能将得到显著提高。 还必须提供CanReadCanSeekCanWriteFlushLengthPositionSeek 和 SetLength 的实现。

不要重写 Close 方法,而应将所有 Stream 清理逻辑放入 Dispose 方法中。 有关更多信息,请参见 实现 Dispose 方法

时间: 2024-10-29 05:50:30

流的概念(来自MSDN)的相关文章

来自MSDN的RibbonGadgets练习

来自MSDN的RibbonGadgets练习 RibbonGadgets是少见的来自官方的资源. 如果选择Menu Items = 集合,则会有向下的小箭头,同时会出现下来菜单. 这个都关系叫做gallery button 同时设置这个可以获得 而colorbutton主要是为了获得color而获得的对应 这个所谓库按钮,可是非常有用的.它比较小,但是好用的. 可以multi-line,可以link,应该是比较好用的. 就差一个上下文了,没有资料呀. 来自为知笔记(Wiz) 附件列表

鲨鱼币上线聚币网交易, 流支付概念得大佬推崇

近日,SAK已正式联手聚币网,成为该平台又一潜力巨大的明星产品.据悉,聚币网为比特币交易网旗下数字货币交易平台,创办于2014年初,现上线的币种包括比特币.莱特币.狗狗币.暗黑币.比特股等.SAK的加盟无疑让这一平台进一步提升.同时,比特币交易网CEO张寿松对这次合作表示满意,对SAK支付.流支付有价值认同. 张寿松表示:SAK支付在实体商户中的推广应用规划是值得肯定的,尤其是基于移动互联网和线下高端商户结合的O2O项目,一旦可以推广起来,对SAK支付在实体商户中的应用将是一个很好的促进,让更多

C/C++中关于输入输出缓冲区和流的概念理解

(本文章关于缓冲区概念的理解部分取自:http://developer.51cto.com/art/201107/277186.htm) 首先可以看下快递的寄送过程: 源地址(商家的仓库)——中转地(快递公司的仓库)——目的地(买家) 我们从淘宝商家买衣服,商家通过快递公司把商品送到我们手里的这个过程可以形象的解释下缓存区和流的这个概念. 1, 淘宝商家不会亲自把商品给买家送过来的,因为这样效率太低了,商家会通过快递公司这个中转,然后快递公司再把东西送给买家.淘宝商家就是在键盘上打字,买家就是程

OTL翻译(2) -- OTL流的概念

OTL流的概念 任何的SQL语句.SQL语句块或存储过程,都是通过输入与输出变量进行处理参数与结果的. 如: 例1:一个SELECT语句把标量的输入变量作为WHERE子句部分的条件:同时SELECT部分则定义了输出的字段,并且在结果集为多行的情况下还是一个VECTOR结构. 例2:一个INSERT语句把数据写入数据库中,同样需要输入数据.UPDATE也是同样的道理. 例3:一个DELETE语句从表中删除数据,删除的条件同样需要通过参数输入. 例4:一个存储过程可能同时具有输入与输出参数.通过存储

Java IO 理解流的概念

Java IO 理解流的概念 @author ixenos 在理解流时首先理解以下概念 1.流的来源和去向一般在构造器指出 2.方法中的形参一般是将流输出到某个位置,读取时从流读出数据(来自流)送到位置上,输出时将所要输出的数据(来自我)送到位置上

C#.net 中 修饰符 详解 (来自MSDN)

自己理解的不够深刻,无奈基础较差!记上一笔,记忆深刻些,哈哈…… 1. 访问修饰符 public 同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员. private 只有同一类或结构中的代码可以访问该类型或成员. protected 只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员. internal 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以. protected internal 由其声明的程序集或另一个程序集派生的类中任

流的概念

计算机程序最一般的模型可以归纳为:输入.计算和输出.输入和输出是人机交互的重要手段,一个设计合理的程序应该首先允许用户根据具体的情况输入不同的数据,然后经过程序算法的计算处理,最后以用户容易接受的方式输出结果.java用流的概念来表示输入输出.java提供的输入输出功能十分强大而灵活,美中不足的是起初看上去输入输出的代码可能并不是很简洁,因为往往需要创建许多不同的流对象.在java类库中,I/O(输入和输出)部分的内容有很多,这点看下JDK的java.io包就知道了,它涉及的主要关键类有:Inp

转:Delphi 流的概念

Delphi流的操作 一.流的概念 流简单说是建立在面向对象基础上的一种抽象的处理数据的工具,它定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员只需掌握对流进行操作,而不用关心流的另一头数据的真正流向.其实,流就是把整个对象转化为一个一个单字节数据,然后形成数据流,其形同把固体石块打碎成一颗颗细小的沙子一样,最后可以形成流沙. 二.流的主要功能 流的主要功能是对文件与非文件数据相互转换进行操作(即它们之间的I/O操作).如将图片文件保存到数据库,那么数据库中的图片数据就变成非文件数据

09-JS的事件流的概念(重点)

在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件.想要知道这些事件是在什么时候进行调用的,就需要了解一下"事件流"的概念. 什么是事件流 事件流描述的是从页面中接收事件的顺序 1.DOM事件流 "DOM2级事件"规定的事件流包括三个阶段: ① 事件捕获阶段: ② 处于目标