当前位置:实例文章 » C#开发实例» [文章]C#(四十六)之基于流的文件操作(FileStream)

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` 来读取和写入数据。

相关标签:c#开发语言
其他信息

其他资源

Top