更好的方法 - GetFiles - c#

Better way of doing it - GetFiles - c#

我正在尝试获取目录中的所有文件,但我希望它们与数字相关联。现在,我有这个:

string[] ficheiro = Directory.GetFiles(@"C:\Users\David\Documents\Jogos\Jogos de emuladores\Roms GB\", "*.gba");
{
     Console.WriteLine ("F1" + " - " + Path.GetFileNameWithoutExtension (ficheiro[0]));
}
Console.ReadKey ();

当我达到 10 个文件时,我将有一个快捷方式来翻页以获取更多文件(每页 10 个)。我将手动列出所有文件。像这样:

Console.WriteLine ("F2" + " - " + Path.GetFileNameWithoutExtension (ficheiro[1]));

Console.WriteLine ("F3" + " - " + Path.GetFileNameWithoutExtension (ficheiro[2]));

有更好的方法吗?

您需要使用循环。你不可能全部都做 "by hand" 因为你不一定知道有多少。

var files = Directory.GetFiles(@"C:\Your\Directory\Path", "*.gba");
var count = 0;

foreach (var file in files)
{
    if (count % 10 == 0 && count != 0)
    {
        Console.ReadLine();
    }

    count++;

    Console.WriteLine("F{0} - {1}", count, Path.GetFileNameWithoutExtension(file));
}
Console.ReadLine();

您可以使用 for 循环遍历数组:

string[] ficheiros = Directory.GetFiles(@"C:\Users\David\Documents\Jogos\Jogos de emuladores\Roms GB\", "*.gba");
for (int i = 0; i < ficheiros.Length; i++)
{
    Console.WriteLine("F{0} - {1}", i + 1, Path.GetFileNameWithoutExtension(ficheiros[i]));
}
Console.ReadKey();

关键是识别重复部分并从中提取模式:

//only these changed V                                                       V
Console.WriteLine ("F2" + " - " + Path.GetFileNameWithoutExtension (ficheiro[1]));
Console.WriteLine ("F3" + " - " + Path.GetFileNameWithoutExtension (ficheiro[2]));

// just replace them and put it inside an appropriate loop, in this case a for-loop
for(int i = 0; i < ficheiro.Length; i++)
    Console.WriteLine ("F" + (i+1) + " - " + Path.GetFileNameWithoutExtension (ficheiro[i]));
        int i = 0;
        var ficheiro = from s in Directory.GetFiles(@"C:\temp\", "*.*")
                       select ("F"+ i++  + "-" + s);