【问题标题】:How do you determine when a filename was last changed in C#?如何确定 C# 中最后一次更改文件名的时间?
【发布时间】:2009-04-23 19:08:25
【问题描述】:

我有一个小型实用程序,可以对文件进行一些处理,并在完成后将文件扩展名更改为 .processed。我还想在“x”天后删除这些旧的 .processed 文件。是否有一个文件属性可以告诉您上次更改文件名的时间?我意识到我可以在处理后在文件末尾添加空格,重新保存,然后获取“LastWriteTime”属性,但我根本不想触摸原始文件。有什么想法吗?

【问题讨论】:

    标签: c# filenames


    【解决方案1】:

    System.IO.FileInfo 命名空间中的 LastWriteTime。

    FileInfo fi1 = new FileInfo(path);
    

    哦,是的,你也可以写这个值。更新文件名时更新它。

    【讨论】:

    • 重命名明确不要修改 LastWriteTime
    • 谢谢,忘记添加关于必须更新值的部分。
    • 太甜了!没有意识到 LastWriteTime 是一个 getter 和一个 setter。
    【解决方案2】:

    如果更新 LastWriteTime 解决方案不能满足您的需求,另一种想法:

    将文件名(或重命名的文件名)和文件处理日期存储在数据库中。

    【讨论】:

      【解决方案3】:

      我不明白... LastWritetime 应该是最后一次写入文件的时间。因此,如果您的处理修改了 x.processed 文件,您可以查看它。您也可以使用GetLastAccessTime 作为最后一次读取。

      编辑:啊,重命名不会修改 LastWriteTime。那么set LastWriteTime yourself

      【讨论】:

        【解决方案4】:

        我认为重命名文件不会更新 LastWriteTime。

        因此,当您的进程重命名文件时,请同时更新 FileInfo 对象中的 LastWriteTime,然后您可以使用 LastWriteTime 进行比较。

        【讨论】:

          【解决方案5】:

          即使在您重命名文件时 Windows 确实更新了 LastWriteTime,它也不够好:

          当您第一次更改文件名时,您可以检查新文件名上的 LastWriteTime 日期,但是一旦您以任何方式编辑文件,之后信息就会丢失。

          幸运的是,在这种情况下,您将通过其他方式更改文件,所以没关系。你可以检查一下就知道你没事了。

          【讨论】:

            猜你喜欢
            • 2011-01-05
            • 2011-01-19
            • 2011-06-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-23
            • 2011-02-16
            • 1970-01-01
            相关资源
            最近更新 更多