vb.net从文件夹中读取所有文件的顺序
问题描述:
我从文件夹中读取所有文件的顺序有问题。vb.net从文件夹中读取所有文件的顺序
我的代码读取文件与错误的顺序 时,我有文件: 的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
答
如果你有文件名作为字符串,你可以对文件进行排序以下列方式
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
这样克,将alfabetically正确排序,另一种方法是转换为int,但是,我没有看到的必要性,在这里
完整的例子都可以在此找到dotnetfiddle
答
假设文件名,不带扩展名,只包含一个数值,那么你可以这样做:
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
那些不是数字,他们正在测试,所以'9.txt'将会比'1000.txt'更高。您需要使用自然排序对结果进行排序[例如这里的一个](http://stackoverflow.com/a/33786276/1070452)另请阅读[问]并参加[游览] – Plutonix
这里有一个几乎相同的问题https://stackoverflow.com/q/12907499/5162073 –
所以有没有排序文件名称的任何方法? – JakubM