前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#/.NET 读取或修改文件的创建时间和修改时间

C#/.NET 读取或修改文件的创建时间和修改时间

作者头像
walterlv
发布2018-09-18 13:04:27
3.3K0
发布2018-09-18 13:04:27
举报

C#/.NET 读取或修改文件的创建时间和修改时间

2018-08-12 11:44

手工在博客中添加 Front Matter 文件头可是个相当费事儿的做法,这种事情就应该自动完成。

.NET 中提供了非常方便的修改文件创建时间的方法,使用这种方法,能够帮助自动完成一部分文件头的编写或者更新。


相关类型

.NET 中提供了两个不同的设置创建和修改时间的入口:

  • File 静态类
  • FileInfo
File 类的时间方法
File 类的时间方法

▲ File 静态类的方法

FileInfo 类的时间方法
FileInfo 类的时间方法

▲ FileInfo 类的方法

很明显,使用 FileInfo 类可以使用属性直接获取和赋值,用法上会比 File 方便,不过需要一个 FileInfo 的实例。

修改时间

我期待能够读取文件的创建和修改时间来获知博客文章的发布和修改时间。不过在此之前,我需要先根据 Markdown 文件元数据更新文件时间。

代码语言:javascript
复制
private void FixFileDate(FileInfo file, DateTimeOffset createdTime, DateTimeOffset modifiedTime)
{
    // 更改文件的创建时间。
    file.CreationTimeUtc = createdTime.UtcDateTime;
    // 更改文件的更新时间。
    file.LastWriteTimeUtc = modifiedTime.UtcDateTime;
    // 更改文件最近一次访问的时间。
    file.LastAccessTimeUtc = DateTimeOffset.Now.UtcDateTime;
}

至于如何获取 Markdown 文件元数据中的时间,可以使用 YamlDotNet(当然,需要自己提取 YAML 元数据头)。

读取时间

当此后需要使用文件的创建时间来更新 YAML 元数据时,只需要读取这几个属性即可。

代码语言:javascript
复制
UpdateMetaTime(file, file.CreationTimeUtc, file.LastWriteTimeUtc);

void UpdateMetaTime(FileInfo file, DateTimeOffset publishDate, DateTimeOffset date)
{
    var publishDateString =  date.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss zz");
    var dateString =  date.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss zz");
    // 省略更新 YAML 元数据。
}

关于 UTC 时间

也许你注意到以上我使用的时间类型都是 DateTimeOffset 而不是 DateTime,这是因为 DateTimeOffset 中记录了时区信息,不至于在使用的过程中丢掉时区信息,出现重复时间转换,发生时间错误。

本文会经常更新,请阅读原文: https://walterlv.com/post/read-write-file-date-attributes.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#/.NET 读取或修改文件的创建时间和修改时间
    • 相关类型
      • 修改时间
        • 读取时间
          • 关于 UTC 时间
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档