1. 流的抽象基类Stream:Stream 是所有流的抽象基类。流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。根据基础数据源或储存库,流可能只支持这些功能中的一部分。通过使用 CanRead、CanWrite 和 CanSeek 属性,应用程序可以查询流的功能。Read 和 Write 方法读写各种不同格式的数据。对于支持查找的流,使用 Seek 和 SetLength 方法以及 Position 和 Length 属性可查询和修改流的当前位置和长度。有些流实现执行基础数据的本地缓冲以提高性能。对于这样的流,Flush 方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。在 Stream 上调用 Close 将刷新所有经过缓冲处理的数据,本质上是为您调用了 Flush。Close 也会释放操作系统资源,如文件句柄、网络连接或用于任何内部缓冲的内存。
  2. 继承自抽象基类Stream的流按功能可分为基流功能流

    1)   基流指有实际的数据源的流,它们封装了从实际数据源读取或写入数据的方法,这样实际使用中就不用考虑与底层比如文件系统,网络连接等怎么打交道。

      .net框架中的基流有如下几种:

  • FileStream:以文件作为数据源,在构造FileStream的对象实例时,都要指明要读取或写入的文件(FileStream的构造函数都要指明文件的路径)。
  • NetworkStream:以网络连接作为数据源,在构造NetworkStream的对象实例时,都要指明要操作的Socket(NetworkStream的构造函数都要有  Socket)。
  • MemoryStream:以内存字节流作为数据源,MemoryStream可以以非空字节流数组作为数据源,也可以使用空数组。当使用非空字节数组时,虽然根据传递到构造函数中的参数可能能够修改现有内容,但既不能追加也不能收缩流。空内存流是可调整大小的,而且可以向其写入和从中读取。

    2)   功能流是对基础流提供一定功能比如压缩解压缩、加密解密的流,功能流必须要有基础流(即在构造功能流的对象实例时,都要指明基础流)。基础流可以是基流或者功能流,也就是说可以将基流附加到一个或多个提供所需功能的功能流从而形成传递流

      .net框架中的功能流有如下几种:

  • DeflateStream、GZipStream:压缩与解压缩流。
  • BufferedStream:缓冲流。
  • CryptoStream:加密解密流。

  3. 流的读写

    1).流自身有Read和Write方法,但流自身的Read和Write方法都是直接对字节数组操作,即使用流自身的Read和Write方法前都要将要准备好字节数组,Read方法要准备好byte[]存储从流中读取的数据,Write方法要准备好要写入流中的byte[]。

    2).根据读写操作处理的数据单位不同,可分为:字节(或二进制)读取器,字节(或二进制)编写器,字符读取器,字符编写器。在构造读取器或编写器的对象实例时,都要传入要操作的流或者能构造出流的参数如文件路径。

    对流按照字节进行读写(用特定的编码将二进制值读作基元数据类型或以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。):

     BinaryReader、BinaryWriter

    对流按照字符进行读写(以一种特定的编码从字节流中读取字符或将字符转化为特定编码写入流):

     StreamReader、StreamWriter

参考:

  • http://shitouer.cn/2012/12/deep-understand-of-java-stream/
  • MSDN

.net stream的更多相关文章

  1. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  2. Node.js:理解stream

    Stream在node.js中是一个抽象的接口,基于EventEmitter,也是一种Buffer的高级封装,用来处理流数据.流模块便是提供各种API让我们可以很简单的使用Stream. 流分为四种类 ...

  3. node中的Stream-Readable和Writeable解读

    在node中,只要涉及到文件IO的场景一般都会涉及到一个类-Stream.Stream是对IO设备的抽象表示,其在JAVA中也有涉及,主要体现在四个类-InputStream.Reader.Outpu ...

  4. nodejs中流(stream)的理解

    nodejs的fs模块并没有提供一个copy的方法,但我们可以很容易的实现一个,比如: var source = fs.readFileSync('/path/to/source', {encodin ...

  5. Node学习笔记(一):stream流操作

    NodeJs中谈及较多的可能就是Stream模块了,先写一个简单的ajax回调 $.post("index.php",{data:'aaa',order:'ccc'},functi ...

  6. Stream

    Stream的好处 1.Stream AP的引入弥补了JAVA函数式编程的缺陷.2.Stream相比集合类占用内存更小:集合类里的元素是存储在内存里的,Stream里的元素是在访问的时候才被计算出来. ...

  7. Stream流

    在Node中,存在各式各样不同的数据流,Stream(流)是一个由不同对象实现的抽象接口.例如请求HTTP服务器的request是一个 流,类似于stdout(标准输出):包括文件系统.HTTP 请求 ...

  8. [LeetCode] Data Stream as Disjoint Intervals 分离区间的数据流

    Given a data stream input of non-negative integers a1, a2, ..., an, ..., summarize the numbers seen ...

  9. [LeetCode] Moving Average from Data Stream 从数据流中移动平均值

    Given a stream of integers and a window size, calculate the moving average of all integers in the sl ...

  10. [LeetCode] Find Median from Data Stream 找出数据流的中位数

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

随机推荐

  1. java学习第16天(泛型 增强for)

    泛型概述 是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.格式: <数据类型> 注意:该数据类型只能是引用类型. 好处:避免了强制类型转换,比如上个实验   S ...

  2. ArcGIS api fo silverlight学习一(silverlight加载GeoServer发布的WMS地图)

    最好的学习资料ArcGIS api fo silverlight官网:http://help.arcgis.com/en/webapi/silverlight/samples/start.htm 一. ...

  3. python selenium 操作chrome

    1.下载chromedriver.exe 入在chrome 浏览器目录下 from selenium import webdriverimport os chromedriver = "C: ...

  4. Foundation框架—日期类(NSDate)

    一 时间类NSDate .创建一个日期对象     NSDate *date1 = [[NSDate alloc] init]; //创建了一个当前的时间点     NSDate *date2 = [ ...

  5. rabbitMQ学习(五)

    topic匹配模式,topic能满足匹配结果就行. 发送端: public class EmitLogTopic { private static final String EXCHANGE_NAME ...

  6. 第六百零六天 how can I 坚持(应该是六百零六天吧)

    找了个考研的借口,也是挺逗的,终于结束了,而且考的很渣. 最近发生了很多事,很快就要离开泛华了,放弃安逸,开始改变吧,其实感觉自己内心挺怂的,很怕改变,哎,这不像是有梦想,能成事的人应该有的. 还是想 ...

  7. TJI读书笔记16-异常处理

    TJI读书笔记16-异常处理 概念 基本异常情形 异常的捕获 自定义异常 异常说明 捕获所有异常 栈轨迹 重新抛出异常 Java标准异常 使用finally 异常的限制 构造器 异常的匹配 其他乱七八 ...

  8. HTTP权威协议笔记-5.Web服务器

    5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...

  9. fastclick 解决js穿透问题

    http://www.tuicool.com/articles/VniQRr http://www.cnblogs.com/MrBackKom/archive/2012/06/26/2564501.h ...

  10. JAVA类图

    类与类图 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能, ...