You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从带索引的文件列表选择文件?避免编写多个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 09:33:17