【问题标题】:GetLastWriteTime not accurate while files existing文件存在时 GetLastWriteTime 不准确
【发布时间】:2016-12-03 01:18:59
【问题描述】:

我正在尝试获取目录中文件的最后修改时间。我遍历目录并打印修改后的日期。输出显示了 10 个文件(在其他文件夹上也有不同数量的文件)。命令提示符中出现了 10 个文件。所有这些都在 1600 年 12 月 31 日打印。

我该如何修复它以便打印正确的日期?

Dim strFilepath = "C:\Test" 'Test folder contains 10 files for test
Dim File As System.IO.FileInfo() = directory.GetFiles()
Dim File1 As System.IO.FileInfo
Dim strLastModified As String

For Each File1 In File 'Loops the GetLastWriteTime
    strLastModified = System.IO.File.GetLastWriteTime(strFilepath & File.ToString()).ToShortDateString()
    Console.WriteLine(strLastModified)'Prints all 10 files but with the 12/31/1600 date
    'Files do exist, code goes into file, it loops through it but wrong date.

【问题讨论】:

标签: vb.net


【解决方案1】:

Jim 已经向您说明了您的日期与他的 dup 链接错误的原因。

您错误地连接了strFilepathFile.ToString(),因为您在它们之间缺少了一个反斜杠\,因此给出了类似:
C:\TestYourFile.txt

此外,您在 For Each 中使用了错误的变量。 应该是File1 而不是File(感谢@Mark)。

解决方案 1:
这就是为什么有Path.Combine 函数的原因。

所以改变

strLastModified = System.IO.File.GetLastWriteTime(strFilepath & File.ToString()).ToShortDateString()

strLastModified = System.IO.File.GetLastWriteTime(Path.Combine(strFilepath, File1.ToString())).ToShortDateString()

解决方案 2:
就像 Mark 评论的那样,您可以使用 FullName 属性,这样会更容易:

strLastModified = System.IO.File.GetLastWriteTime(File1.FullName).ToShortDateString()

【讨论】:

  • 它也应该是File1,因为FileFileInfo 的数组(但ToString() 可能已经给出了完整路径)。也许改用File1.FullPath,这样你就不必组合任何东西了?
  • 很好的通知@Mark 我会把它合并到我的答案中。谢谢!
猜你喜欢
  • 2013-09-21
  • 2012-02-29
  • 2016-10-19
  • 2010-10-23
  • 1970-01-01
  • 2021-01-30
  • 2014-10-21
  • 1970-01-01
  • 2023-03-02
相关资源
最近更新 更多