文件 I/O

文件是存储在磁盘具有特定名称和目录路径的数据的集合。当一个文件被打开阅读或书写时,就变成了流。

流基本上是通过通信路径中的字节顺序。主要有两个流:输入流和输出流。输入流用于从文件系统中读取数据,输出流用于向文件中写数据。

I/O 类

System.IO 的命名空间有多种类,这些类被用于执行大量和文件有关的操作,例如创建和删除文件,读写文件,关闭文件等等。

下面的表格中列出了一些 System.IO 命名空间中常用的非抽象类:

I/O 类 描述
BinaryReader 从二进制流读取原始数据
BinaryWriter 以二进制形式写入原始数据
BufferedStream 字节流的临时存储
Directory 用于操作目录结构
DirectoryInfo 用于创建复合条件指令。
DriveInfo 用于执行目录操作
File 用于操作文件
FileInfo 用于执行文件操作
FileStream 用于读写文件中任意位置的内容
MemoryStream 用于随机存取存储器中存储的流数据
Path 用于执行有关路径信息的操作
StreamReader 用于从字节流中读取字符
StreamWriter 用于向流中写字符
StringReader 用于读取字符串数组
StringWriter 用于写入字符串数组

FileStream 类

System.IO 命名空间中的 FileStream 类有助于读取,写入和关闭文件。这个类派生自抽象类流。

你需要创建一个 FileStream 对象用于创建一个新的文件或打开一个已存在的文件。创建 FileStream 对象的语法如下:

  1. FileStream <object_name> = new FileStream( <file_name>, <FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

例如,创建一个 FileStream 对象F,读取一个名为 sample.txt 的文件的方法如下:

  1. FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
参数 描述
FileMode fileMode 枚举定义了各种方法来打开文件。fileMode 枚举的成员是:
Append: 打开一个已有的文件,并将光标放置在文件的末尾。如果文件不存在,则创建文件。
Create: 它创建一个新的文件
CreateNew: 指定操作系统应创建一个新的文件。如果文件已存在,则抛出异常。
Open: 它会打开一个现有的文件
OpenOrCreate: 指定操作系统应打开一个已有的文件。如果文件不存在,则用指定的名称创建一个新的文件打开。
Truncate: 打开一个已有的文件,文件一旦打开,就将被截断为零字节大小。
FileAccess FileAccess 枚举成员有:Read,ReadWrite 和 Write。
FileShare FileShare 枚举有以下成员:
Inheritable: 允许文件句柄可由子进程继承。
None: 它拒绝共享当前文件
Read: 它允许打开文件进行读取
ReadWrite: 它允许打开文件进行读取和写入
*Write: 它允许打开文件写入

示例

下面的程序示范了 FileStream 类:

  1. using System;
  2. using System.IO;
  3. namespace FileIOApplication
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
  10. for (int i = 1; i <= 20; i++)
  11. {
  12. F.WriteByte((byte)i);
  13. }
  14. F.Position = 0;
  15. for (int i = 0; i <= 20; i++)
  16. {
  17. Console.Write(F.ReadByte() + " ");
  18. }
  19. F.Close();
  20. Console.ReadKey();
  21. }
  22. }
  23. }

编译执行上述代码,得到如下结果:

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

C# 中的高级文件操作

上面的实例演示了 C# 中简单的文件操作。但是,要充分利用 C# System.IO 类的强大功能,您需要知道这些类常用的属性和方法。

主题和描述
文本文件的读写
它涉及到文本文件的读写。StreamReader 和 StreamWriter 类有助于完成文本文件的读写。
二进制文件的读写
它涉及到二进制文件的读写。BinaryReader 和 BinaryWriter 类有助于完成二进制文件的读写。
Windows文件系统的操作
它让 C# 程序员能够浏览并定位 Windows 文件和目录。