.NET框架图解之三:System.IO

文/xugao918  出处/博客园

上一篇,我们讲解了System.dll,现在我们来看System.IO,要操作IO,就需要,确定储存媒介,打开,然后读取或者写入,那么在.Net中这三步是如何的呢?还是老规矩上图


 附件: 您所在的用户组无法下载或查看附件

        1.打开:

              Directory和File,前者用来操作文件夹,后者操作文件,它们和FileSystemInfo的两个子类的区别在于,他们是静态类,对文件或文件夹的操作是弱类型的。而FileSystemInfo的两个子类是实例类,它们是强类型的。

        2.储存媒介:

              抽象Stream基类,提供了对储存媒介的同步或异步的访问,他把数据流表示为原始的字节流,他的三个子类提供了,基于文件的Filestream,基于内存的MenoryStream。这里用到了GOF23中Decorator(装饰),动态地给一个对象添加一些额外的职责。


 附件: 您所在的用户组无法下载或查看附件
   


  • 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
  • 处理那些可以撤消的职责。
  • 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
        上图中的Component在.net里就是Stream, ,COncreateDecorator:FileStream,MemoryStream,BufferedStream 进行装饰,生成各具不同功能的对象,不同格式的流。         


        3.读取或写入:读取(写入)有三种方式,StreamReader(Writer):以字节流读取(写入),StringReader(Writer):以字符串流读取(写入),BinaryReader(Writer):以2进制流读取(写入)

Code


通过这三个层次的类,就可以完成IO的操作,简单的就是用File打开一个文件,它会返回一个Stream,然后用相应的读写器去读取或者写入.

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Visual Studio.NET] 的这些文章也感兴趣:

Sandcastle源代码已发布
.Net Framework框架源码学习(第一篇 迭代器模式)
使用微软分布式缓存服务Velocity Part 1
Visual Studio 插件库
基于VS Shell的魔兽世界插件开发工具
什么是Heritrix
从微软选拔“IT英雄”看.NET在中国的应用
如何在Email正文里显示图片
使用jmail组件发送电子邮件(C#)
使用NLog实现一个简单的日志记录(包含源代码)