如何在C#控制台ToDo应用中保存并跨会话调用用户输入数据
C# 控制台待办应用持久化存储实现方案
对于入门级待办应用,最适合新手的持久化方案是使用本地JSON文件存储任务数据,无需额外搭建数据库,语法简单易实现,完全匹配你当前的需求。
1. 适配VS for Mac的环境准备
你不需要安装额外的第三方工具,仅需要引入.NET官方的JSON处理库即可:
- 打开VS for Mac,右键你的项目 → 选择「管理NuGet包」
- 搜索
System.Text.Json,安装官方发布的包即可(.NET Core 3.0及以上版本默认已内置该库,可跳过安装步骤)
2. 定义任务实体类
先创建一个单独的类存储待办任务的属性,后续序列化/反序列化都基于这个类处理:
public class ToDoItem { // 待办任务内容 public string Content { get; set; } // 任务创建时间,用于排序展示 public DateTime CreateTime { get; set; } }
3. 封装文件读写工具方法
直接读写本地todo.json文件实现数据持久化,文件默认存在程序运行的同级目录,你也可以自行修改存储路径:
using System.Text.Json; using System.IO; // 配置数据文件的存储路径 private static string _dataPath = Path.Combine(AppContext.BaseDirectory, "todo.json"); // 读取所有历史待办任务 private static List<ToDoItem> ReadAllTodos() { // 文件不存在时返回空列表,避免第一次运行报错 if (!File.Exists(_dataPath)) { return new List<ToDoItem>(); } string json = File.ReadAllText(_dataPath); // 反序列化JSON为任务列表,为空时返回空列表 return JsonSerializer.Deserialize<List<ToDoItem>>(json) ?? new List<ToDoItem>(); } // 写入最新的任务列表到文件 private static void SaveAllTodos(List<ToDoItem> todos) { // 序列化时开启缩进,方便你手动打开文件查看内容 string json = JsonSerializer.Serialize(todos, new JsonSerializerOptions { WriteIndented = true }); File.WriteAllText(_dataPath, json); }
4. 集成到你的业务逻辑
刚好可以匹配你预期的程序逻辑,以下是简化的主程序示例:
static void Main(string[] args) { Console.WriteLine("=== 控制台待办工具 ==="); // 启动时先读取所有历史任务 var allTodos = ReadAllTodos(); Console.WriteLine("请选择操作:\n1. 查看所有待办任务\n2. 新增待办任务"); var option = Console.ReadLine(); if (option == "1") { Console.WriteLine("\n你的所有待办任务:"); foreach (var todo in allTodos) { Console.WriteLine($"- [{todo.CreateTime:yyyy-MM-dd HH:mm}] {todo.Content}"); } } else if (option == "2") { Console.WriteLine("\n请输入待办内容:"); var content = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(content)) { // 新增任务到列表 allTodos.Add(new ToDoItem { Content = content, CreateTime = DateTime.Now }); // 保存最新列表到本地文件 SaveAllTodos(allTodos); Console.WriteLine("\n新增成功,当前所有待办任务:"); foreach (var todo in allTodos) { Console.WriteLine($"- [{todo.CreateTime:yyyy-MM-dd HH:mm}] {todo.Content}"); } } } }
VS for Mac环境注意事项
- 调试时如果找不到生成的
todo.json文件,可右键项目 → 选项 → 生成 → 输出,查看输出目录路径,文件就存储在该目录下 - 本地调试无需额外配置读写权限,默认用户目录下的文件都可以正常读写
- 后续打包发布给其他用户使用时,该存储逻辑无需修改,文件会自动生成在程序运行的同级目录
内容的提问来源于stack exchange,提问作者Rarowcun
相关产品推荐
相关产品推荐

