代码改变世界

C#--流与文件(Stream & File)(一)

2010-03-28 00:43  Eric.Hu  阅读(4425)  评论(2编辑  收藏  举报

 

  • 流概念 

 

流失字节序列的抽象概念,如文件的操作,输入/输出设备,内部进行通信的管道等,Stream类及其派生类提供这些不同类型的输入和输出的一般视图,这样的程序员就不必熟悉操作系统和基础设备的具体细节,也可以对流进行操作。

流常用的三个基本操作:

1. 读取流:操作是从流到数据结构的数据传输

2. 写入流:该操作时从数据结构到流的数据传输

3. 流支持查找:查找是对流内的当前位置进行查询与修改

以上三个功能可以通过CanRead ,CanWrite,CanSeek属性进行设置。

 

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

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

在实现Stream的派生类时,必须提供Read和Write方法的实现。异步方法BeginRead,EndRead,BeginWrite和EndWrite通过同步方法Read和Write实现。ReadByte和WriteByte可以实现创建一个新的单元字节数组,然后调用Read和Write实现。

 

 

  • 文件概述 
文件在操作时表现为流,即流是从一些输入中读取到的一系列字节。

文件按信息在外部存储器上腭编码方式可以分为文本文件和二进制文件。

 

Stream类是System.IO命名空间中的一个类,在System.IO命名空间中,包含所有允许在数据流和文件上进行同步和异步读取和写入的类,下面简单介绍一下常用的类。

1. Directory类:包含了所有操作目录的静态方法,如目录的创建,移动,复制,删除等

2. DirectoryInfo类:包含了所有操作目录的实例方法,如目录的各种属性(名字,创建时间),目录的各种操作(目录的创建,是否存在,移动,删除等)

3. File类:是对文件的典型操作,提供文本的创建,打开,复制,删除,移动等静态方法。也可以用于获取文件和设置文件的基本信息。

4. FileInfo类:对文件的典型操作, 提供文本的创建,打开,复制,删除,移动等实例方法。当文件需要多次重用时,使用FileInfo类提供的实例方法,不可以使用File提供的静态方法。

5. FileStream类:该类实现了对文件读取,写入,打开,关闭操作,支持随机访问文件,可以使用同步方式打开文件进行读写,也可以用异步方式打开文件进行读写。

6. Path类:该类对包含文件或目录路径信息的String实例操作,这些操作可以跨平台的方式执行的。

7. MemoryStream类:该类创建起支持存储区为内存的流。

8. StreamReader类:该类可以读取标准文本文件的内容。即实现一个TextReader。默认编码格式为UTF-8。

9. StreamWriter类:该类可以往标准文本文件中写入内容。即实现一个TextWriter。默认编码格式为UTF-8。

10. StringReader类: 该类实现从字符串进行读取的TextReader。

11. StringWriter类:该类实现将信息写入字符串,该信息存储在基础的StringBuilder中。

12. TextReader类:该类表示可读取连续字符系统的阅读器。

13. TextWriter类:该类表示可以编写一个有序字符系列的编辑器,是抽象类。 

 

 代码示例:文件的创建与文件内容的输入输出

 代码

 1 if(File.Exists(filePath))
 2 {
 3     File.Delete(filePath);
 4 }
 5 FileStream fs=File.Create(filePath,1024);     //创建文件
 6 Byte[] info=new UTF8Encoding(true).GetBytes("测试内容");
 7 fs.Write(info,0,info.Length);     //向新创建的文件写入内容
 8 fs.Close();
 9 
10 using(StreamReader sr=File.OpenText(filePath))
11 {
12     While(sr.ReadLine()!=null)
13         MessageBox.Show(sr.ReadLine());
14 }

 


参考代码:

 文件属性的获取与设置:/Files/long-gengyun/FileAttribute.rar

显示文件夹中的文件与子文件夹:/Files/long-gengyun/GetDirectory.rar

文件的打印输出:/Files/long-gengyun/FilePrint.rar

计算机系统信息获取:/Files/long-gengyun/GetSystemInfo.rar