【问题标题】:vb.net Order of reading all files from foldervb.net 从文件夹中读取所有文件的顺序
【发布时间】:2017-06-20 18:15:01
【问题描述】:

我对从文件夹中读取所有文件的顺序有疑问。

我的代码以错误的顺序读取文件 当我有文件时: 1.txt 2.txt 10.txt 20.txt 100.txt

我的代码读取文件查看文件的第一个字母: 1.txt 10.txt 100.txt 2.txt 20.txt

如何读取数字顺序的文件? 1.txt 2.txt 10.txt 20.txt 100.txt

我在下面使用代码:

        Dim di As New DirectoryInfo(Path), fiArr As FileInfo() = di.GetFiles()
        Dim strplik As FileInfo
        For Each strplik In fiArr
        'read strplik from file
        next strplik

【问题讨论】:

标签: vb.net file directory


【解决方案1】:

如果您将文件名作为字符串,您可以按以下方式对文件进行排序

Dim files as String() = {"1.txt", "10.txt", "15.txt", "2.txt", "20.txt"}
Dim sortedResults = from file in files _
                    order by file.PadLeft(10, "0") _
                    select file
For Each result in sortedResults
    Console.WriteLine( result )
next

它会做的是确保所有文件的总长度为10个字符,通过在文本前面添加0,最后你会得到类似的东西

1.txt  => 000001.txt
10.txt => 000010.txt

这样,它将按字母顺序正确排序,另一种选择是转换为 int 但是,我在这里看不到它的必要性

可以在dotnetfiddle中找到完整的示例

【讨论】:

    【解决方案2】:

    假设文件名,没有扩展名,只包含一个数值,那么你可以这样做:

    Dim files = New DirectoryInfo(path).GetFiles.OrderBy(Function(x) Val(System.IO.Path.GetFileNameWithoutExtension(x.Name)))
    For Each file In files         
        Debug.Print(file.FullName)
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 2013-06-20
      • 2021-01-08
      • 2010-12-23
      相关资源
      最近更新 更多