【问题标题】:Better way of doing it - GetFiles - c#更好的方法 - GetFiles - c#
【发布时间】:2015-08-19 18:27:01
【问题描述】:

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

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]));

有没有更好的方法?

【问题讨论】:

  • 这个问题似乎更适合codereview.stackexchange.com,因为您似乎没有问题。您想提高代码的质量。
  • 其实我觉得我做错了。因为我必须手工完成所有页面。

标签: c# path getfiles


【解决方案1】:

您需要使用循环。您无法“手动”完成所有这些操作,因为您不一定知道有多少。

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();

【讨论】:

  • 好吧,挺好的。但它会跳过第一个和第二个文件。以及如何向其中添加页面?你能给我解释一下吗?我对此很在意。谢谢你的时间。
  • 实际上它并没有跳过任何文件,它只是打印了错误的数字。我已对其进行了更新以解决此问题。
  • 太好了。现在,我如何制作某种页面,如下所示:我单击一个键,命令提示符清理前 10 个文件并提供我拥有的其他文件?像一个页面?
  • 你可以尝试使用 Console.Clear()。这是来自 msdn 页面的文档。 msdn.microsoft.com/en-us/library/…
  • 好的,这很有用。但是我该如何处理这些文件呢?像 11、12、13、14 到 20 会显示在命令提示符下吗?再次点击后会显示 21、22、23、24 到 30?这是我的主要问题。
【解决方案2】:

您可以使用 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]));

【讨论】:

  • 它给了我 12 次相同的文件(我在目录中拥有的文件数。
【解决方案3】:
        int i = 0;
        var ficheiro = from s in Directory.GetFiles(@"C:\temp\", "*.*")
                       select ("F"+ i++  + "-" + s);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多