【问题标题】:Possible to get last modified date of folder?可以获得文件夹的最后修改日期吗?
【发布时间】:2019-06-19 09:34:13
【问题描述】:

我有一段代码可以读取目录中的所有文件,并从所有这些文件中获取最新日期。不知道我是不是很傻,但是有没有办法做同样的事情,但是通过获取该目录中文件夹的最后修改日期而不是文件?

Dim chkPath = "C:\CheckFolders"
Dim directory As New System.IO.DirectoryInfo(chkPath)
Dim File As System.IO.FileInfo() = directory.GetFiles()
Dim File1 As System.IO.FileInfo
Dim LastModified As String

For Each File1 In File
    LastModified = System.IO.File.GetLastWriteTime(chkPath & "\" & File1.Name).ToShortDateString()
Next

MsgBox(LastModified)

【问题讨论】:

  • 一个DirectoryInfo 对象有一个LastWriteTime 属性。
  • 或者你可以像使用File.GetLastWriteTime一样使用Directory.GetLastWriteTime(String) Method
  • 而且你应该使用file1.FullName而不是chkPath & "\" & File1.Name,如果你真的想使用后者,Path.Combine(chkPath, file1.Name)会更好。

标签: vb.net


【解决方案1】:

与其希望目录条目按日期升序返回,不如主动查找最新的条目。您可以使用 LINQ Max 方法来做到这一点,如下所示:

Shared Function GetLatestFileModified(d As String) As DateTime

    Dim di = New DirectoryInfo(d)
    Dim latest = di.EnumerateFiles().Max(Function(i) i.LastWriteTimeUtc)

    Return latest

End Function

Shared Function GetLatestDirectoryModified(d As String) As DateTime

    Dim di = New DirectoryInfo(d)
    Dim latest = di.EnumerateDirectories().Max(Function(i) i.LastWriteTimeUtc)

    Return latest

End Function

例如,

Dim src = "C:\temp"
Console.WriteLine(GetLatestFileModified(src).ToShortDateString())
Console.WriteLine(GetLatestDirectoryModified(src).ToShortDateString())

可能会给

2019 年 4 月 26 日
2019 年 10 月 4 日

【讨论】:

  • 非常感谢安德鲁。经过一个痛苦的小时后,我设法解决了问题,但是您的方法要好得多。我现在要研究 LINQ!
  • @S.T 不客气 :) 文件 I/O 要记住的一件事是任何时候都可能发生异常,例如用户可能会在尝试使用文件时设法删除它们,因此一旦您掌握了基础知识,就可以进行某种优雅的错误处理。
【解决方案2】:

我的解决方案中有以下代码。

        'Check if file needs updating
        Dim infoStkReader As System.IO.DirectoryInfo
        infoStkReader = My.Computer.FileSystem.GetDirectoryInfo(SUI)
        Dim CurrentdirectoryDate As DateTime = infoStkReader.LastWriteTime

其中 SUI 是目录路径。

谢谢, 理查德。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2019-02-26
    • 2021-10-25
    • 2011-11-02
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多