【问题标题】:C# Directory.EnumerateFiles Wrong Ordering [duplicate]C# Directory.EnumerateFiles 错误排序[重复]
【发布时间】:2015-03-04 11:34:48
【问题描述】:

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

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

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

_9_10 总是会发生这种情况; _99_100_999_1000;等等……

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

【问题讨论】:

标签: c# io directory


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多