网络编程 
首页 > 网络编程 > 浏览文章

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

(编辑:jimmy 日期: 2024/9/17 浏览:3 次 )

前言

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

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

相关类型

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

File 静态类

FileInfo 类

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

▲ File 静态类的方法

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

▲ FileInfo 类的方法

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

修改时间

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

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

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 中记录了时区信息,不至于在使用的过程中丢掉时区信息,出现重复时间转换,发生时间错误。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

上一篇:.NET Core系列之MemoryCache 缓存过期
下一篇:.NET Core系列之MemoryCache 初识
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 SiteMap