数据流概述

数据流(也称为流)是一个用于传输数据的对象,数据的传输有两个方向,如果是数据从外部源传输到程序中 ,就称为读取流:如果输数据从程序传输到外部源,就称为写入流

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

根据基础数据源和储存库,流可能只支持这些功能中的一部分,用户通过使用CanRead、CanWrite和Canseek属性,可实现应用程序查询流的功能。

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

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

在Stream上调用Close将刷新所有讲过缓冲区处理的数据,本质上使为用户调用Flush方法。Close也会释放操作系统资源,如文件句柄、网络连接或用于任何内部缓冲的内存。BufferedStream类提供了将一个讲过缓冲的流环绕另一个流功能,一遍提高读写性能。

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

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

还必须提供CanRead、Canseek、CanWite、Flush、Length、Position、Seek和setLength的实现。不要重写Close方法,而应将所有流清理逻辑放入Dispose方法中。

C#语言中提供的主要数据流类有NetWorkStream网络流,BufferedStream缓冲区流,MemoryStram内在流,FileStrram文件流,CryptoStream加密流等。

原文地址:https://www.cnblogs.com/xiaowie/p/8669242.html