2012-10-05 45 views
0

所以我下面的代码行如何组织DirectoryInfo.GetFiles()

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号和小数点是文档的页码

+0

您可以使用LINQ来订购文件(或者简单的'diar1.Sort()')。如果你想给我们更多的信息,我们可以给你一个例子。什么是'filetype'? –

+0

.sort()完全是我所寻找的不能相信的我错过了那么多的感谢 –

回答

0

您可以使用LINQ订购您的文件:

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枚举结果:

foreach(var x in tifs) 
    Console.WriteLine("File:{0}", x.fn); 

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