.NET流的体系结构

.NET I/O操作的最小单位是字节,这是因为进行I/O操作时许多设备面向字节。因此.NET的System.IO命名空间提供了Stream类表示字节流。前面提到,即使数据流所连接的物理设备不同,所有的数据流都以相同的方式工作。Stream类提供了标准的数据流操作,比如读取字节、写入字节操作等。

Stream类是面向字节的,但是程序员通常更喜欢使用字符。在.NET中char是16位,而字节是8位。如果正在使用ASCII字符集,那么在char和byte之间直接进行转换很简单,只需忽略char类型的高位字节即可,但是对于Unicode编码字符是不可用的。因此,字节流不适合处理基于字符的I/O。

另外,有时程序员还希望以二进制的形式读取,这样更加方便用户处理数据。如果使用字节流处理二进制,那么必须进行二进制数据和字节数据的转换。例如,浮点整型数据就是二进制数据,如果用户需要处理浮点整型数据,那么就需要在字节流中将浮点整型数据和字节数据进行转换。这样势必会给开发者带来麻烦,因此可以说字节流也不是很适合处理二进制数据。

为了解决数据的格式问题,C#定义了一些类,它们将字节数据流转换为字符数据流或者将字节数据流转换成二进制数据流。图7-2根据不同的数据格式,对.NET数据流进行了分类。

也都以相同的方式工作,因此.NET的I/O系统能够应用于许多类型的设备,例如用来输出到控制台的方法也能够用来输出到磁盘文件。I/O系统的数据流如图7-1所示。

 
图7-2  数据流分类
字节流、字符流以及二进制流的分类分别如图7-3、图7-4和图7-5所示。

转载于:https://www.cnblogs.com/jxnclyk/archive/2010/04/03/1703909.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值