C#(四十六)之基于流的文件操作(FileStream)
发布人:shili8
发布时间:2024-08-08 08:07
阅读次数:0
**基于流的文件操作(FileStream)**
在 C# 中,`FileStream` 是一个用于读取和写入二进制数据的类。它提供了对文件的直接访问,使得我们可以以流的形式来处理文件,而不是一次性全部读入内存中。这使得我们能够高效地处理大型文件,并且避免了内存溢出的问题。
**创建一个 FileStream 对象**
要使用 `FileStream`,我们首先需要创建一个 `FileStream` 对象。这个对象的构造函数接受三个参数:文件路径、访问模式和共享模式。
csharpusing System.IO; // 创建一个 FileStream 对象FileStream fileStream = new FileStream("example.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
在上面的例子中,我们创建了一个 `FileStream` 对象,用于读取或写入名为 "example.txt" 的文件。我们使用 `FileMode.OpenOrCreate` 来指定,如果文件不存在,就创建一个新的文件;如果文件已经存在,就打开它。如果我们只想读取文件,而不修改它,那么我们可以使用 `FileAccess.Read`。
**读取和写入数据**
一旦我们有了一个 `FileStream` 对象,我们就可以使用它来读取或写入数据。要读取数据,我们可以使用 `Read` 方法,传递一个缓冲区和一个长度参数。
csharp//读取10 个字节的数据byte[] buffer = new byte[10]; int bytesRead = fileStream.Read(buffer,0,10);
在上面的例子中,我们创建了一个 `byte` 数组,大小为10 个字节,然后使用 `Read` 方法来读取10 个字节的数据。返回值是实际读取的字节数。
要写入数据,我们可以使用 `Write` 方法,传递一个缓冲区和一个长度参数。
csharp// 写入10 个字节的数据byte[] buffer = new byte[10]; buffer[0] = 'A'; buffer[1] = 'B'; buffer[2] = 'C'; buffer[3] = 'D'; buffer[4] = 'E'; buffer[5] = 'F'; buffer[6] = 'G'; buffer[7] = 'H'; buffer[8] = 'I'; buffer[9] = 'J'; fileStream.Write(buffer,0,10);
在上面的例子中,我们创建了一个 `byte` 数组,大小为10 个字节,然后使用 `Write` 方法来写入10 个字节的数据。
**关闭 FileStream**
一旦我们完成了对文件的操作,就应该关闭 `FileStream` 对象,以释放系统资源。
csharp// 关闭 FileStreamfileStream.Close();
在上面的例子中,我们使用 `Close` 方法来关闭 `FileStream` 对象。
**示例代码**
下面是一个完整的示例代码,演示了如何使用 `FileStream` 来读取和写入数据。
csharpusing System; using System.IO; class FileStreamExample{ static void Main(string[] args) { // 创建一个 FileStream 对象 using (FileStream fileStream = new FileStream("example.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)) { //读取10 个字节的数据 byte[] buffer = new byte[10]; int bytesRead = fileStream.Read(buffer,0,10); Console.WriteLine($"Read {bytesRead} bytes:"); foreach (byte b in buffer) { Console.Write(b + " "); } Console.WriteLine(); // 写入10 个字节的数据 byte[] data = new byte[10]; for (int i =0; i < 10; i++) { data[i] = (byte)('A' + i); } fileStream.Write(data,0,10); // 关闭 FileStream fileStream.Close(); } } }
在上面的例子中,我们使用 `FileStream` 来读取和写入数据,然后关闭 `FileStream` 对象。
**总结**
在本文中,我们学习了如何使用 `FileStream` 类来读取和写入二进制数据。我们了解了创建一个 `FileStream` 对象的方法,包括文件路径、访问模式和共享模式。我们还学习了如何使用 `Read` 和 `Write` 方法来读取和写入数据,以及关闭 `FileStream` 对象的方法。最后,我们提供了一个完整的示例代码,演示了如何使用 `FileStream` 来读取和写入数据。