首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何组织DirectoryInfo.GetFiles()

如何组织DirectoryInfo.GetFiles()
EN

Stack Overflow用户
提问于 2012-10-06 06:30:54
回答 1查看 709关注 0票数 0

所以我有以下几行代码

代码语言:javascript
复制
Dim di As New IO.DirectoryInfo(path)
    Dim diar1 As IO.FileInfo() = di.GetFiles("*." & filetype)

有没有可能根据文件名预先安排元素,现在组织文件的方式是,有几个数字以错误的顺序显示。我之所以这样问,是因为我基本上是为了确定目录中是否缺少文件。我通过从一个文件名中减去另一个文件名来确定这一点。例如,文件名可以是1.0001.tif、1.0002.tif、2.0001.tif等等。确定文档id号的整数和小数就是文档的页码。

EN

回答 1

Stack Overflow用户

发布于 2012-10-06 07:02:09

您可以使用LINQ对文件进行排序:

代码语言:javascript
复制
var tifs = Directory.EnumerateFiles(path, "*.tif", SearchOption.TopDirectoryOnly)
    .Select(fn => new { fn, name = Path.GetFileNameWithoutExtension(fn) })
    .Select(x => new
    {
        x.fn,
        x.name,
        major = int.Parse(x.name.Split('.')[0]),
        minor = int.Parse(x.name.Split('.')[1])
    })
    .OrderBy(x => x.major).ThenBy(x => x.minor);

请注意,您需要添加using System.Linq,并且这还不是故障安全的。它要求文件始终采用这种格式,否则int.Parse将抛出异常(您可以使用int.TryParse)。

您可以使用foreach枚举结果:

代码语言:javascript
复制
foreach(var x in tifs)
    Console.WriteLine("File:{0}", x.fn);

编辑:但如果你只想按字母顺序排序,你也可以简单地使用diar1.Sort()(正如我的评论中提到的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12754861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档