首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VB.NET Directory.GetFiles按日期排序

VB.NET Directory.GetFiles按日期排序
EN

Stack Overflow用户
提问于 2017-08-31 12:57:58
回答 2查看 8.9K关注 0票数 2

我有一个Xml文件目录。如何只抓取在过去30天中创建的文件,并按升序排序?如果有更有效的解决方案,我不一定要使用Directory.GetFiles。

然后,我创建了一个文件列表,并将其绑定到一个gridView,在该列表中,我需要文件名和路径。我显示文件名,并在RowDataBound事件中使用Path值为文件构建一个HyperLink。

谢谢!\m/ \m/

代码语言:javascript
运行
复制
Dim filePaths() As String = Directory.GetFiles("C:\XmlFiles\")
Dim files As List(Of ListItem) = New List(Of ListItem)

For Each filePath As String In filePaths
    files.Add(New ListItem(Path.GetFileName(filePath), filePath))
Next

gv.DataSource = files
gv.DataBind()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-31 13:00:49

您可以使用LINQ:

代码语言:javascript
运行
复制
Dim filePathsSortedByDate = From f In Directory.EnumerateFiles("C:\XmlFiles\")
                            let fileCreationTime = File.GetCreationTime(f)
                            Where (Date.Today - fileCreationTime.Date).Days <= 30 
                            Order By fileCreationTime
                            Select New ListItem(Path.GetFileName(f), f)
Dim files As List(Of ListItem) = filePathsSortedByDate.ToList()
票数 1
EN

Stack Overflow用户

发布于 2017-08-31 13:51:47

我们可以做得更好。只需获取名称,然后按时间进行排序,就需要为这两个属性分别执行硬盘驱动器,这是很慢的。通过切换到DirectoryInfo,我们可以将其减少到每个文件到磁盘的一次行程:

代码语言:javascript
运行
复制
Dim filesByDate = DirectoryInfo.EnumerateFiles("C:\XmlFiles\").
                     Where(Function(f) f.CreationTime > DateTime.Today.AddDays(-30)).
                     OrderBy(Function(f) f.CreationTime).
                     Select(Function(f) f.Name)
gv.DataSource = filesByDate
gv.DataBind()

并不是说差异很可能会驱动程序的性能,但是减少磁盘I/O :)总是很好的。

在这种情况下,使用GetX而不是EnumerateX可能是更好的事件。通常,您希望选择“枚举”vs "get“的任何内容,因为内存使用减少,并且能够在第一项可用时立即开始处理,而不是等到最后一项可用时才开始处理。不过,在这种情况下,您有可能将内存使用转换为磁盘I/O。我不熟悉这些方法的内部实现,但GetFileSystemInfos()可能可以在一次或几次磁盘访问中获取所有文件的信息,这将是一个巨大的胜利。但是再一次..。我对这里的细节不太熟悉,你必须自己测试哪一个在你的情况下更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45982028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档