Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何组织DirectoryInfo.GetFiles()_Vb.net_.net - Fatal编程技术网

Vb.net 如何组织DirectoryInfo.GetFiles()

Vb.net 如何组织DirectoryInfo.GetFiles(),vb.net,.net,Vb.net,.net,我有以下几行代码 Dim di As New IO.DirectoryInfo(path) Dim diar1 As IO.FileInfo() = di.GetFiles("*." & filetype) 是否有可能根据文件名预先安排元素,现在组织文件的方式是,有几个数字以错误的顺序出现。我这样问是因为我基本上是为了确定目录中是否缺少一个文件。我通过从一个文件名中减去另一个文件名来确定这一点。例如,文件名为1.0001.tif 1.0002.tif 2.0001.tif,依此

我有以下几行代码

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

您可以使用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);
请注意,您需要使用System.Linq添加
,并且这还不是故障安全的。它要求文件始终具有此格式,否则将抛出
int.Parse
(您可以使用
int.TryParse

您可以使用foreach枚举结果:

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

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

您可以使用LINQ对文件进行排序(或者简单地使用
diar1.Sort()
)。如果你能给我们更多的信息,我们可以给你举个例子。确切地说,
文件类型是什么?.sort()完全是我要找的,真不敢相信我错过了,非常感谢