我正在从以下文件夹中读取一些文件:
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
;等...
是否有任何订购选项可以使这项工作?
答案 0 :(得分:3)
如果文件总是形式为Client_<number>.txt
,那么您基本上希望根据解析的数字对它们进行排序。因此,编写一个方法来获取原始文件名,取消前缀/后缀(或使用正则表达式提取数字),然后使用int.Parse
。获得该方法后,您可以使用OrderBy
对序列进行适当的排序。请注意,此时使用EnumerateFiles
不会给您带来任何实际好处,因为它需要先获取所有文件名才能生成第一个文件名。
当然,如果你可以更改文件名格式,你可以将它们格式化为Client_0000.txt
等 - 只要你没有达到10,000个文件,你就可以了。
答案 1 :(得分:1)
如果您想以不同的顺序获取文件,则必须通过OrderBy
调用自行明确订购文件。 EnumerateFiles
本身不支持任何其他订购。