带动态选项的控制台菜单

时间:2016-07-08 05:05:22

标签: c#

我有一个文本文件列表,我希望能够在控制台应用程序中打开它。

我想要的输出是这样的:

  
      
  1. List1.txt
  2.   
  3. List2.txt
  4.   
  5. List3.txt

         

  6.   

获得此输出后,我想要一种能够调用其中一个文件并通过Console.ReadLine();打开它的方法

我现在正在做的是

string[] FileNames = Directory.GetFiles(@"Itemized\", ".txt");
Console.WriteLine(String.Join(Environment.NewLine,FileNames));    

这使得我可以获得如下所示的列表:

  

分项\ List1.txt

     

分项\ List2.txt

     

分项\ List3.txt

如果我知道文件夹中的文件数量,我可以对其进行硬编码,但我遇到的问题是可能存在任意数量的文件。

所以我现在正在寻找一种方法,可以将缩放数值附加到每个文件,并从前面删除文件夹名称。

我尝试过使用for循环让它工作但似乎无法理解它。

2 个答案:

答案 0 :(得分:3)

尝试这样的事情

var fileNames = Directory.GetFiles(@"Itemized\", "*.txt").Select(Path.GetFileName).ToArray();
Console.WriteLine(string.Join(Environment.NewLine, fileNames));

答案 1 :(得分:2)

这是简洁明了的事情:

    static void Main(string[] args)
    {
        string dirFolderPath = string.Format("{0}/{1}", Directory.GetCurrentDirectory(), "Itemized");
        DirectoryInfo dir = new DirectoryInfo(dirFolderPath);

        if(!dir.Exists)
        {
            dir.Create();
        }

        FileInfo[] files = dir.GetFiles("*.txt");

        for(int i = 0; i < files.Length; i++)
        {
            string line = string.Format("\n{0}-{1}", i, files[i].Name);
            Console.WriteLine(line);   
        }

        Console.ReadLine();
    }