简体   繁体   English

vb.net 无法对文件名进行排序

[英]vb.net cannot sort file name

this is my code这是我的代码

Dim orderedFiles = New System.IO.DirectoryInfo(dir).GetFiles("file_*.jpeg").OrderBy(Function(x) x.Name)

For Each f As System.IO.FileInfo In orderedFiles
msgbox(f.name)
Next

display展示

file_1.jpeg
file_10.jpeg
file_11.jpeg
file_12.jpeg
file_13.jpeg
file_14.jpeg
file_2.jpeg
file_3.jpeg
file_4.jpeg
file_5.jpeg
file_6.jpeg
file_7.jpeg
file_8.jpeg
file_9.jpeg

i want them to sort 1 - 2 - 3...... 14我希望他们按 1 - 2 - 3 排序...... 14
how can i do it?我该怎么做?

You can do what you want without changing the file names using the StrCmpLogicalW API, eg您可以在不更改文件名的情况下使用StrCmpLogicalW API 执行您想要的操作,例如

Imports System.IO
Imports System.Runtime.InteropServices

Module Module1

    <DllImport("shlwapi.dll", CharSet:=CharSet.Unicode)>
    Private Function StrCmpLogicalW(x As String, y As String) As Integer
    End Function

    Sub Main()
        Dim files = New DirectoryInfo("D:\johnm\Documents\Test").GetFiles()

        Array.Sort(files,
                   Function(file1, file2) StrCmpLogicalW(file1.Name, file2.Name))

        For Each file In files
            Console.WriteLine(file.Name)
        Next

        Console.ReadLine()
    End Sub

End Module

problem solved!问题解决了! i just set every file name with padleft 000000我只是用 padleft 000000设置每个文件名
eg 000001 and 000010 now everything is fine例如000001000010现在一切都很好

code代码

Dim test1 As String = "1"
test1 = test1.ToString.PadLeft(6, "0"c)

display展示

000001

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM