C#中使用 StreamWriter 打开并写入文件的方法

Ivy
Ivy
发布时间:2026-10-14 | 3人浏览过
原创

C# 提供了丰富的文件系统操作库,其中 System.IO.StreamWriter 是专门用于将字符写入流的类型。本文将通过一个完整的示例,展示如何使用该组件打开文件、逐行写入内容以及处理潜在的文件异常。

核心实现逻辑

StreamWriter 的构造函数接受文件路径字符串作为参数。当传入的路径指向不存在或非当前目录下的文件时,该类会自动创建新文件;若文件已存在且未指定覆盖参数,默认行为可能取决于具体构造函数的重载版本(通常简单的字符串构造函数会覆盖现有内容或尝试创建)。以下演示展示了如何结合 try-catch 块来确保操作的健壮性。

第1步:引入命名空间与定义流对象

首先需要在代码顶部引用 System 和 System.IO 命名空间,并声明 StreamWriter 类型的变量。

  1. 引用必要库:using System; 和 using System.IO;
  2. 声明变量:StreamWriter fstr_out;

第2步:创建文件流实例

使用 new StreamWriter("test.txt") 语法直接创建流对象。此操作会尝试打开或创建名为 test.txt 的文件。

try {
    // 直接通过文件路径创建 StreamWriter,文件不存在则自动创建
    fstr_out = new StreamWriter("test.txt");
} catch (IOException exc) {
    Console.WriteLine(exc.Message + " Cannot open file.");
    return;
}

注意:如果文件被其他进程独占锁定,或者没有足够的权限访问该路径,此处将抛出 IOException。

第3步:循环写入用户输入数据

在确认流成功打开后,程序进入交互模式,读取控制台输入并将其追加到文件中。

  1. 提示用户输入信息。
  2. 通过 Console.ReadLine() 获取字符串。
  3. 手动添加换行符("\r\n")以确保不同行的内容在不同段落显示。
  4. 调用 fstr_out.Write(str) 将数据写入流。
// 模拟用户输入循环直到输入 "stop"
do {
    Console.Write(": ");
    str = Console.ReadLine();
    if (str != "stop") {
        str = str + "\r\n"; // 添加换行标记
        try {
            fstr_out.Write(str);
        } catch (IOException exc) {
            Console.WriteLine(exc.Message + " File Error");
            return;
        }
    }
} while (str != "stop");

第4步:关闭流与资源清理

所有写入完成后,必须显式调用 fstr_out.Close()。这一步不仅关闭了与文件的连接,还会刷新缓冲区中的数据到磁盘,防止数据丢失。

fstr_out.Close();

虽然上述示例使用了直接的 Close() 方法,在实际的大型项目开发中,更推荐使用 using 语句块来管理资源,这样可以确保即使发生异常,底层资源也能得到正确的释放。

以上就是 C# 使用 StreamWriter 打开并写入文件的详细内容,更多关于 C# 文件 I/O 操作的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表