📅  最后修改于: 2023-12-03 14:40:31.285000             🧑  作者: Mango
在 C# 编程语言中,FileStream 是用于进行底层操作的流类型之一。FileStream 类派生自 Stream 类,提供了定义文件操作的类,包括创建、打开、读取、写入和关闭文件等操作。FileStream 类可以通过使用指定的 String(表示文件路径)、FileStreamOptions 和 FileAccess 枚举值创建。
创建一个 FileStream 有多个构造函数,具体如下:
FileStream(String, FileMode)
: 创建一个新的 FileStream 对象,用于访问指定的文件。当指定的文件不存在时,使用 FileMode.Create 模式创建此文件。FileStream(String, FileMode, FileAccess)
: 创建一个新的 FileStream 对象,用于访问指定的文件。可选项 FileAccess 参数指定可以使用文件的操作。FileStream(String, FileMode, FileAccess, FileShare)
: 创建一个新的 FileStream 对象,用于访问指定的文件。可选项 FileAccess 参数指定可以使用文件的操作。可选项 FileShare 参数指定可与此 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 进行写入和读取操作时,需要注意的是:
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 的基本构造函数、读写操作和定位操作。了解这些基础知识,可以让程序员更好地操作文件,在实践中提高效率。