C#Directory.EnumerateFiles错误的订购

时间:2015-01-06 18:26:17

标签: c# io directory

我正在从以下文件夹中读取一些文件:

foreach (string file in Directory.EnumerateFiles(<folder>, "Client_*.txt"))
{
//Do my stuff
}

如果我有 Client_999.txt Client_1000.txt 文件,则 Client_1000.txt 文件始终为首先处理。

这种情况始终发生在_9_10; _99_100; _999_1000;等...

是否有任何订购选项可以使这项工作?

2 个答案:

答案 0 :(得分:3)

如果文件总是形式为Client_<number>.txt,那么您基本上希望根据解析的数字对它们进行排序。因此,编写一个方法来获取原始文件名,取消前缀/后缀(或使用正则表达式提取数字),然后使用int.Parse。获得该方法后,您可以使用OrderBy对序列进行适当的排序。请注意,此时使用EnumerateFiles不会给您带来任何实际好处,因为它需要先获取所有文件名才能生成第一个文件名。

当然,如果你可以更改文件名格式,你可以将它们格式化为Client_0000.txt等 - 只要你没有达到10,000个文件,你就可以了。

答案 1 :(得分:1)

如果您想以不同的顺序获取文件,则必须通过OrderBy调用自行明确订购文件。 EnumerateFiles本身不支持任何其他订购。