订购文件

时间:2018-08-26 12:38:08

标签: vb.net file for-loop foreach

我在使用Visual Basic以有序方式处理文件时遇到一些问题。基本上,我正在读取名为1.jpg,2.jpg,.... 10.jpg,11.jpg的文件夹中的所有文件。

创建逻辑时,我需要按文件名(1、2、3 ...,8、9、10、11)升序处理这些文件。实际上,使用我的代码,我猜这些文件是以字符串方式工作的(1,10,2,20,3,4,5)。

在这种情况下有人可以帮助我,因为我无法正常工作吗? 尝试了两种不同的代码,但无法解决。

我尝试过:

Dim MyFiles() As String = IO.Directory.GetFiles(folder)
For Each file In myfiles

并尝试使用:

Dim myfiles As FileInfo()
myfiles = New DirectoryInfo(folder).GetFiles()
For Each file In myfiles

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

如果文件名只是数字,那很容易:

Dim MyFiles() As String = IO.Directory.GetFiles(folder)

For Each file In myfiles.OrderBy(Function(filePath) CInt(IO.Path.GetFileNameWithoutExtension(filePath)))

如果文件名包含文本和数字,则稍微复杂一些,但是可以使用Windows API函数以文件资源管理器的方式对文件名进行排序,因为文件资源管理器使用该功能。如果需要,请发表评论,我会发表细节。