第三十式:C# 文件的输入与输出 (藏经阁)

绝世
秘籍
冲儿,你脑子(内存)里的东西,一旦睡着(关机)就忘了。
要想把武功秘籍永久流传下去,必须把它写在纸上(硬盘文件)。
这就是文件的输入与输出 (File I/O)

1. 核心招式 - System.IO

你需要引入 using System.IO;

写文件 (Write) - 著书立说


// 1. 快速写入所有文本(如果文件不存在会自动创建,如果存在会覆盖)
File.WriteAllText("secret.txt", "欲练此功,必先自宫。");

// 2. 追加写入(在后面接着写)
File.AppendAllText("secret.txt", "\n就算自宫,未必成功。");
        

读文件 (Read) - 研读秘籍


if (File.Exists("secret.txt")) // 先看看秘籍在不在
{
    string content = File.ReadAllText("secret.txt");
    Console.WriteLine("秘籍内容:\n" + content);
}
        

2. 进阶招式 - 流 (Stream)

如果秘籍太厚(文件太大,比如几个G),一次性读到脑子里会走火入魔(内存溢出)。

这时候要用流 (Stream),一行一行地读。


// 使用 using 自动释放资源
using (StreamWriter sw = new StreamWriter("big_secret.txt"))
{
    sw.WriteLine("第一行");
    sw.WriteLine("第二行");
}

using (StreamReader sr = new StreamReader("big_secret.txt"))
{
    string line;
    // 一行一行读,直到读完(null)
    while ((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}
        
注意文件路径!
如果你只写文件名 "secret.txt",它会保存在程序运行的当前目录下(通常是 bin/Debug/net8.0)。
如果想指定位置,最好用绝对路径,或者用 Path.Combine 来拼接路径,这样跨平台(Windows/Linux)更安全。
📚

动手时刻:日记本

编写一个程序,每次运行都询问:“今天练了什么功?”

把用户的输入追加保存到 diary.txt 文件中。

保存后,把日记里的所有内容打印出来回顾一下。

查看参考答案

Console.WriteLine("今天练了什么?");
string input = Console.ReadLine();

File.AppendAllText("diary.txt", DateTime.Now + ": " + input + "\n");

Console.WriteLine("--- 历史日记 ---");
Console.WriteLine(File.ReadAllText("diary.txt"));
                    

成就解锁:【史官】 获得:春秋笔