如何获取今天更新的文件列表? 。净

时间:2013-12-09 17:54:04

标签: .net vb.net file-upload

我在FTP服务器中有数千个文件,我可以使用Windows资源管理器连接。日复一日,在晚上,我必须找到今天更改(上传)的文件并取其名字。 我想开发一个Visual Basic批处理应用程序,只需运行带有参数(日期)的EXE,就可以获取这些文件的名称列表。

最近我在这里找到了这段代码:

source = "\\ftp_my\Upload\"
searchfor = "*"
Dim dirs As String() = Directory.GetFiles(source, searchfor)
For Each file In dirs
    fileinfo = New FileInfo(file)
    If (fileinfo.LastWriteTime >= DateAdd(DateInterval.Day, -1, Date.Today)) Then
        'execute my actions
    End If
Next

但是列出所有文件并评估其属性需要花费不可思议的时间。另一方面,如果我只是制作一个“dir”,导出到excel,拆分文本并手动评估我想要的日期/文件,我早于VB完成该研究!

因此应该有一个命令列出在合理期间按日期DESC排序的文件,是吗?

1 个答案:

答案 0 :(得分:2)

我注意到的一些事情可能会减慢你的迭代速度。

您正在将每个文件名转换为fileinfo对象,而不是使用fileinfo对象的集合。

您要为每个文件计算要检查的目标日期,而不是计算一次。

这是一种使用LINQ执行所需操作的方法,该LINQ将在不到5秒的时间内在映射的网络驱动器上找到1000个文件(最糟糕的情况):

    Dim source = New DirectoryInfo("\\ftp_my\Upload\")
    Dim searchfor = "*"
    Dim TargetDate = DateAdd(DateInterval.Day, -1, Date.Today)
    Dim dirs = (From f As FileInfo In source.GetFiles(searchfor)
                Where f.CreationTime >= TargetDate
                Select f).ToList

dirs将包含您要定位的每个文件的所有fileinfo对象。

如果通过dirs迭代并在每个文件上完成操作需要很长时间,那么这将告诉您花费的时间,并且您可以开始查看该代码并开始优化它以缩短时间。