C#文件和流操作:使用FileStream与Stream类

版权申诉
0 下载量 49 浏览量 更新于2024-08-25 收藏 243KB PDF 举报
"本章主要介绍了C#中的文件和流操作,包括使用流进行文件读写,File类和FileInfo类的使用,Directory类和DirectoryInfo类的使用,以及实例演示了查找文件、拖放打开文件、拆分和合并文件的方法。核心知识点集中在使用Stream类及其派生类对文件进行读写,特别是FileStream、BinaryReader、BinaryWriter、StreamReader和StreamWriter的使用,以及数据的序列化。" 在C#中,文件和流的概念是编程中处理数据输入输出的关键部分。文件被视为顺序字节流,这意味着它们可以被连续地读取或写入。抽象基类`Stream`是所有流操作的核心,它提供了读写文件的基本框架。Stream有多个派生类,每个类专门处理不同类型的读写操作。 1. **FileStream类**:用于以字节为单位读写文件。它包含诸如`CanRead`、`CanSeek`、`CanWrite`、`Length`和`Position`等属性,以及`Write`和`Read`方法来写入和读取数据。构造函数接受路径、模式(如`FileMode.Append`、`FileMode.Create`)和访问权限(如`FileAccess.Read`、`FileAccess.Write`)作为参数。 2. **BinaryReader和BinaryWriter类**:这两个类提供了一种以基本数据类型为单位读写文件的方法,可以直接处理bool、String、int16、int等类型的数据。 3. **StreamReader和StreamWriter类**:这两个类以字符或字符串为单位读写文件,适合处理文本数据。例如,StreamReader可以从文件读取一行文本,而StreamWriter可以向文件写入字符串。 4. **数据序列化**:对于更复杂的数据结构,如类的对象,C#提供了数据序列化的机制。这使得对象的状态可以被保存到文件或数据库中,并在需要时还原。数据序列化通常涉及`BinaryFormatter`或`XmlSerializer`等类。 举例说明,以下代码展示了如何使用FileStream写入字节数组: ```csharp using System; using System.IO; class Program { static void Main(string[] args) { byte[] data = new byte[10]; for (int i = 0; i < 10; i++) { data[i] = (byte)i; } // 创建FileStream对象 FileStream fs = new FileStream("d://g1.bin", FileMode.Create); fs.Write(data, 0, 10); // 写入数据 fs.Close(); } } ``` 这段代码创建了一个10字节的数组,并将其写入到名为“d://g1.bin”的文件中。通过调用`FileStream`的`Write`方法,数据被写入文件,然后关闭流。 除了以上所述的基础流操作,C#还提供了`File`和`FileInfo`类来处理文件的基本属性和操作,如创建、删除、移动文件;`Directory`和`DirectoryInfo`类则用于处理目录操作,如创建、删除、遍历目录等。此外,实例中还提到了查找文件、拖放打开文件和拆分合并文件,这些都是文件操作的常见应用场景。理解并熟练掌握这些知识点对于任何C#开发者来说都是至关重要的。