C#中使用 StreamWriter 打开并写入文件的方法
C# 提供了丰富的文件系统操作库,其中 System.IO.StreamWriter 是专门用于将字符写入流的类型。本文将通过一个完整的示例,展示如何使用该组件打开文件、逐行写入内容以及处理潜在的文件异常。
核心实现逻辑
StreamWriter 的构造函数接受文件路径字符串作为参数。当传入的路径指向不存在或非当前目录下的文件时,该类会自动创建新文件;若文件已存在且未指定覆盖参数,默认行为可能取决于具体构造函数的重载版本(通常简单的字符串构造函数会覆盖现有内容或尝试创建)。以下演示展示了如何结合 try-catch 块来确保操作的健壮性。
第1步:引入命名空间与定义流对象
首先需要在代码顶部引用 System 和 System.IO 命名空间,并声明 StreamWriter 类型的变量。
- 引用必要库:
using System;和using System.IO; - 声明变量:
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步:循环写入用户输入数据
在确认流成功打开后,程序进入交互模式,读取控制台输入并将其追加到文件中。
- 提示用户输入信息。
- 通过
Console.ReadLine()获取字符串。 - 手动添加换行符(
"\r\n")以确保不同行的内容在不同段落显示。 - 调用
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 操作的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









