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

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


相关类型

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

  • File 静态类
  • FileInfo

File 类的时间方法
▲ File 静态类的方法

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

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

修改时间

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

1
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 元数据时,只需要读取这几个属性即可。

1
UpdateMetaTime(file, file.CreationTimeUtc, file.LastWriteTimeUtc);
void UpdateMetaTime(FileInfo file, DateTimeOffset publishDate, DateTimeOffset date)