如何从带索引的文件列表选择文件?避免编写多个switch case
实现动态选择文件编辑(无需Switch Case)
你的需求核心是利用列表的索引直接定位文件,不用写一堆switch case,具体可以按以下步骤来:
1. 优化文件列表的获取与展示
你的现有代码里,用files.IndexOf(file)存在隐患——如果有重名文件,索引会出错。建议直接用for循环绑定索引,同时把文件列表保存为类的成员变量,方便后续调用:
// 把文件列表作为类的字段,让其他方法能直接访问 private List<string> _txtFiles = new List<string>(); public void ShowTxt() { string path = Environment.CurrentDirectory; // 直接通过ToList()获取文件列表,无需手动循环添加 _txtFiles = Directory.GetFiles(path, "*.txt", SearchOption.TopDirectoryOnly) .Select(Path.GetFileName) .ToList(); // 用for循环直接获取索引,避免重名导致的索引错误 for (int i = 0; i < _txtFiles.Count; i++) { Console.WriteLine($"[{i}] {_txtFiles[i]}"); } }
2. 获取用户输入并验证有效性
显示列表后,让用户输入索引,同时做合法性校验(确保是数字、且在有效索引范围内):
public string GetSelectedFile() { Console.WriteLine("\n请输入要编辑的文件索引:"); while (true) { string input = Console.ReadLine(); // 尝试将输入转为整数 if (int.TryParse(input, out int index)) { // 检查索引是否在列表的有效范围内 if (index >= 0 && index < _txtFiles.Count) { return _txtFiles[index]; } else { Console.WriteLine($"请输入0到{_txtFiles.Count - 1}之间的数字!"); } } else { Console.WriteLine("输入无效,请输入数字索引!"); } } }
3. 编写文件编辑逻辑
拿到选中的文件名后,就可以进行读取、修改、保存操作,举个简单示例:
public void EditFile(string fileName) { string fullPath = Path.Combine(Environment.CurrentDirectory, fileName); // 读取并展示当前文件内容 Console.WriteLine($"当前文件内容:\n{File.ReadAllText(fullPath)}\n"); // 获取用户输入的新内容 Console.WriteLine("请输入新的文件内容(输入完成后按回车):"); string newContent = Console.ReadLine(); // 保存修改后的内容 File.WriteAllText(fullPath, newContent); Console.WriteLine("文件已保存!"); }
4. 整合流程
在主逻辑里把这些方法串起来即可:
public static void Main(string[] args) { var editor = new TxtEditor(); // 假设你的类名为TxtEditor editor.ShowTxt(); string selectedFile = editor.GetSelectedFile(); editor.EditFile(selectedFile); }
这样不管文件夹里有1个还是100个txt文件,都不用写switch case,直接通过列表索引就能定位目标文件,完全动态适配文件数量。
内容的提问来源于stack exchange,提问作者Luminaire
相关产品推荐
相关产品推荐

