C#实现文本文件读写操作详解
在开发应用中,频繁需要与外部数据进行交互,其中文本文件的读写是最常见的需求之一。在C#编程语言中,System.IO命名空间提供了丰富的类来处理文件操作。本文将演示如何使用不同的API来实现文本文件的创建、写入、读取以及按行处理,涵盖从简单的一键操作到灵活的流式处理场景。
写入文本文件
C#提供了多种写入文件的方式,选择哪种方式取决于数据格式(如字符串数组或单个字符串)以及是否需要逐行处理逻辑。
第1步:使用File类直接写入所有行
File.WriteAllLines 方法适用于将字符串数组一次性写入文件。如果指定路径的文件不存在,它会自动创建;如果文件已存在,则会覆盖原有内容。
- 准备数据:定义包含多行的字符串数组,例如
string[] lines = { "first line", "second line", "third line", "第四行" }; - 执行写入:调用
System.IO.File.WriteAllLines,传入文件完整路径(建议使用@"C:\testDir\test.txt"避免转义字符问题)和目标编码(推荐Encoding.UTF8)。
// 如果文件不存在,则创建;存在则覆盖
//该方法写入字符数组换行显示
string[] lines = { "first line", "second line", "third line", "第四行" };
System.IO.File.WriteAllLines(@"C:\testDir\test.txt", lines, Encoding.UTF8);
第2步:使用File类写入单段字符串
对于简单的整段文本,可以直接使用 File.WriteAllText。该方法同样会在文件不存在时创建,存在时覆盖。
// 如果文件不存在,则创建;存在则覆盖
string strTest = "该例子测试一个字符串写入文本文件。";
System.IO.File.WriteAllText(@"C:\testDir\test1.txt", strTest, Encoding.UTF8);
第3步:使用StreamWriter灵活写入
当需要根据条件筛选内容,或者需要将新内容追加到文件末尾而不是覆盖时,应使用 StreamWriter。
- 参数说明:
- 参数1:文件路径
- 参数2:布尔值。设为true表示追加模式(Append),设为false表示覆盖模式(默认行为)。 - Write vs WriteLine:
file.Write()直接写入文本不换行,file.WriteLine()写入后自动添加换行符。
// 在将文本写入文件前,处理文本行
// StreamWriter第二个参数为true则把文本追加到文件末尾
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\testDir\test2.txt", true))
{
foreach (string line in lines)
{
// 示例:跳过包含特定内容的行
if (!line.Contains("second"))
{
file.Write(line);
file.WriteLine(line);
}
}
}
读取文本文件
读取文件的目标是将磁盘上的内容加载到内存中以供程序使用。根据后续处理需求,可以选择一次性加载全部文本或按行流式处理。
第4步:整体读取为字符串
使用 File.ReadAllText 可以将整个文件内容作为一个长字符串返回,适合小文件或不需要分行处理的场景。
// 直接读取出字符串
string text = System.IO.File.ReadAllText(@"C:\testDir\test1.txt");
Console.WriteLine(text);
第5步:按行读取为字符串数组
File.ReadAllLines 会将文件内容分割成 string[],每一行对应数组中的一个元素。这种方法在处理结构化文本数据(如CSV格式的文本版)时非常方便。
// 按行读取为字符串数组
string[] lines = System.IO.File.ReadAllLines(@"C:\testDir\test.txt");
foreach (string line in lines)
{
Console.WriteLine(line);
}
第6步:使用StreamReader流式读取
对于大文件,为了避免占用过多内存,推荐使用 StreamReader 进行逐行读取。这种方式会一行一行地读出文本,直到文件结束。
- 判断结束:通过
sr.ReadLine()返回值是否为null来判断是否读到了文件末尾。 - 资源释放:务必使用
using语句包裹,确保文件句柄在使用完毕后被正确关闭。
// 从头到尾以流的方式读出文本文件
//该方法会一行一行读出文本
using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\testDir\test.txt"))
{
string str;
while ((str = sr.ReadLine()) != null)
{
Console.WriteLine(str);
}
}
以上就是在C#中进行文本文件写入与读取操作的详细内容,涵盖了从简单的一键操作到复杂的流式处理逻辑。更多关于C#文件I/O的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









