.NET中Stream和FileStream的使用方法

来源:这里教程网 时间:2026-02-21 17:30:59 作者:

在.NET中,Stream 是一个抽象基类,用于表示字节序列的读写操作。它是处理I/O操作的核心类型之一。而 FileStream 是 Stream 的一个具体实现,用于对文件进行读写操作。

Stream 基本概念与常用方法

Stream 类位于 System.IO 命名空间下,定义了所有流的基本行为。它是一个抽象类,不能直接实例化,但提供了多个虚方法供派生类重写。

常用的 Stream 操作方法包括:

Read(byte[] buffer, int offset, int count):从流中读取指定数量的字节到缓冲区。 Write(byte[] buffer, int offset, int count):将指定数量的字节从缓冲区写入流。 Flush():清空缓冲区,将缓冲内容写入底层设备。 Seek(long offset, SeekOrigin origin):设置当前流的位置(适用于可查找的流)。 Close()Dispose():释放流占用的资源。

Stream 的常见子类有 FileStream、MemoryStream、NetworkStream 等。

FileStream 文件读写操作

FileStream 用于直接操作磁盘上的文件。通过它可以实现文件的创建、读取、写入和追加等操作。

创建 FileStream 的方式通常使用构造函数或 File 静态方法。

使用构造函数:
using (FileStream fs = new FileStream("example.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!");
    fs.Write(data, 0, data.Length);
}
使用 File.Create / File.Open:
using (FileStream fs = File.Create("output.txt"))
{
    byte[] info = new UTF8Encoding(true).GetBytes("Some text");
    fs.Write(info, 0, info.Length);
}

FileMode 参数说明:

Create:创建新文件,若已存在则覆盖。 Open:打开已有文件。 Append:以追加方式打开文件。 CreateNew:创建新文件,若存在则抛异常。

结合 StreamReader 和 StreamWriter 使用

虽然 FileStream 可以直接处理字节数据,但在处理文本时更推荐使用 StreamReader 和 StreamWriter,它们封装了编码和字符转换。

// 写入文本
using (FileStream fs = new FileStream("textfile.txt", FileMode.Create))
using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
{
    sw.WriteLine("第一行");
    sw.WriteLine("第二行");
}
// 读取文本
using (FileStream fs = new FileStream("textfile.txt", FileMode.Open))
using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}

注意事项与最佳实践

使用 Stream 和 FileStream 时需注意以下几点:

务必调用 Dispose() 或使用 using 语句确保资源被正确释放。 FileStream 在访问大文件时建议使用缓冲区分块读写,避免内存溢出。 多线程环境下访问同一文件需加锁或使用 FileShare 控制共享权限。 捕获 IOException 等异常,防止因文件被占用或权限不足导致程序崩溃。

基本上就这些。掌握 Stream 和 FileStream 是进行文件操作的基础,理解其机制有助于写出更高效稳定的 I/O 代码。

相关推荐