📜  C#中FileStream的基础(1)

📅  最后修改于: 2023-12-03 14:40:31.285000             🧑  作者: Mango

C# 中 FileStream 的基础

在 C# 编程语言中,FileStream 是用于进行底层操作的流类型之一。FileStream 类派生自 Stream 类,提供了定义文件操作的类,包括创建、打开、读取、写入和关闭文件等操作。FileStream 类可以通过使用指定的 String(表示文件路径)、FileStreamOptions 和 FileAccess 枚举值创建。

FileStream 的常用构造函数

创建一个 FileStream 有多个构造函数,具体如下:

  • FileStream(String, FileMode): 创建一个新的 FileStream 对象,用于访问指定的文件。当指定的文件不存在时,使用 FileMode.Create 模式创建此文件。
  • FileStream(String, FileMode, FileAccess): 创建一个新的 FileStream 对象,用于访问指定的文件。可选项 FileAccess 参数指定可以使用文件的操作。
  • FileStream(String, FileMode, FileAccess, FileShare): 创建一个新的 FileStream 对象,用于访问指定的文件。可选项 FileAccess 参数指定可以使用文件的操作。可选项 FileShare 参数指定可与此 FileStream 对象共享使用文件的其他文件句柄数量。
FileStream 的基本读写操作

下面是 FileStream 的基本读写操作的示例代码:

//通过FileStream写入文件
using (FileStream fs = new FileStream(path, FileMode.Create))
{
    byte[] buffer = Encoding.UTF8.GetBytes("Hello, World!");
    fs.Write(buffer, 0, buffer.Length);
}

//通过FileStream读取文件
using (FileStream fs = new FileStream(path, FileMode.Open))
{
    byte[] buffer = new byte[1024];
    int length = fs.Read(buffer, 0, buffer.Length);
    string str = Encoding.UTF8.GetString(buffer, 0, length);
    Console.WriteLine(str);
}

以上代码演示了如何使用 FileStream 类的 Write 和 Read 方法进行文件的写入和读取。在使用 FileStream 进行写入和读取操作时,需要注意的是:

  • 写入操作:需要将要写入的数据转换为 byte 数组后,调用 FileStream 的 Write 方法进行写入。其中,第一个参数为要写入的 byte 数组,第二个参数为 byte 数组的起始索引位置,第三个参数为要写入的字节数。
  • 读取操作:需要提供一个缓冲区,通过 FileStream 的 Read 方法将读取到的数据存储到缓冲区中。其中,第一个参数为缓冲区,第二个参数为缓冲区的起始索引位置,第三个参数为要读取的字节数。最后使用 Encoding 类的 GetString 方法将 byte 数组转换为字符串。
FileStream 的基本定位操作

FileStream 的定位操作是可以精确定位到文件的读写位置,并在此位置进行数据的写入和读取。文件定位是通过两个主要属性来控制的:Position 和 SeekOrigin。其中,Position 表示文件中的当前位置;SeekOrigin 表示相对于哪个位置进行定位。下面是一个简单的定位例子:

using (FileStream fs = new FileStream(path, FileMode.Open))
{
    byte[] buffer = new byte[1024];
    fs.Seek(5, SeekOrigin.Begin);
    int length = fs.Read(buffer, 0, buffer.Length);
    string str = Encoding.UTF8.GetString(buffer, 0, length);
    Console.WriteLine(str);
}

以上代码演示了如何使用 FileStream 类的 Seek 方法跳过文件的前 5 个字符,然后再读取数据。其中,第一个参数表示要跳过的字节数,第二个参数表示跳过位置的起始位置。

总结

FileStream 是 C# 中进行底层操作的流类型之一,用于读写文件。本文介绍了 FileStream 的基本构造函数、读写操作和定位操作。了解这些基础知识,可以让程序员更好地操作文件,在实践中提高效率。