首页 > 解决方案 > vb.net 无法对文件名进行排序

问题描述

这是我的代码

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

展示

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

我希望他们按 1 - 2 - 3 排序...... 14
我该怎么做?

标签: .netvb.net

解决方案


你可以做你想做的事,而无需使用StrCmpLogicalWAPI 更改文件名,例如

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

推荐阅读