图解DotNet框架之三:System.IO
2013-03-04 13:44
344 查看
(声明:本系列只想给大家介绍.net框架,并不是语法和类的使用的讲解,所以只能概括的描述一下所提到的类,如果有疑问可以到MSDN上面去查)
在上一篇,我们讲解了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进制流读取(写入)
FileStream fs = File.Open(@"C:\Users\kevin\Desktop\1.txt", FileMode.OpenOrCreate);//打开文件返回一个文件流
StreamReader sr = new StreamReader(fs);
string str = sr.ReadToEnd();//以字节读取文件
StreamWriter sw = new StreamWriter(fs);
sw.Write("1234");//以字节写文件
fs.Close();
/**/////或者使用下面的
BinaryWriter bw = new BinaryWriter(fs);
bw.Write("1234");//以二进制写文件
fs.Close();
通过这三个层次的类,就可以完成IO的操作,简单的就是用File打开一个文件,它会返回一个Stream,然后用相应的读写器去读取或者写入.
下一篇:.NET 框架与架构模式和设计模式详解系列(图解DotNet)之四:ADO.net核心(System.Data)
在上一篇,我们讲解了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进制流读取(写入)
FileStream fs = File.Open(@"C:\Users\kevin\Desktop\1.txt", FileMode.OpenOrCreate);//打开文件返回一个文件流
StreamReader sr = new StreamReader(fs);
string str = sr.ReadToEnd();//以字节读取文件
StreamWriter sw = new StreamWriter(fs);
sw.Write("1234");//以字节写文件
fs.Close();
/**/////或者使用下面的
BinaryWriter bw = new BinaryWriter(fs);
bw.Write("1234");//以二进制写文件
fs.Close();
通过这三个层次的类,就可以完成IO的操作,简单的就是用File打开一个文件,它会返回一个Stream,然后用相应的读写器去读取或者写入.
下一篇:.NET 框架与架构模式和设计模式详解系列(图解DotNet)之四:ADO.net核心(System.Data)
相关文章推荐
- 图解DotNet框架之三:System.IO
- 图解DotNet框架之六:System.XML
- 图解DotNet框架之三:System.IO
- 图解DotNet框架之二:System
- 图解DotNet框架之三:System.IO
- 图解DotNet框架之六:System.XML
- 图解DotNet框架之五:System.Reflection
- 图解DotNet框架之四:System.Data
- ERPSYSTEM开发教程05 框架接口管理
- System.IO.Path部分方法详解
- hive配置遇到的问题( Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D)
- 百万级 TCP 长连接即时通讯框架 t-io
- JAVA IO框架
- System.IO全面总结(二)
- 安卓文件安全删除问题 --- java.io.IOException: open failed: EBUSY (Device or resource busy) (System.err)
- System.IO 读写二进制、字符串、byte[]
- java io系列17之 System.out.println("hello world")原理
- System.IO 命名空间
- Android 网络通信框架Volley简介(Google IO 2013)
- C# System.IO.FileStream 文件正由另一进程使用,因此该进程无法访问该文件