Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C#/.NET 读取或修改文件的创建时间和修改时间

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

作者头像
walterlv
发布于 2018-09-18 05:04:27
发布于 2018-09-18 05:04:27
3.5K00
代码可运行
举报
运行总次数:0
代码可运行

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

2018-08-12 11:44

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

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


相关类型

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

  • File 静态类
  • FileInfo

▲ File 静态类的方法

▲ FileInfo 类的方法

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

修改时间

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python 修改文件的创建时间、修改时间、访问时间
突如其来想知道一下 python 如何修改文件的属性(创建、修改、访问时间),于是就去网上搜集了可行方案,也就有了这篇博客
suwanbin
2019/12/17
4.9K0
python获取文件修改时间与创建时间
转载自:  http://blog.csdn.net/liyuan_669/article/details/25347037
py3study
2020/01/06
5.9K0
项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦)
发布于 2018-04-12 13:03 更新于 2018-08-29 01:36
walterlv
2018/09/18
1.7K0
C#/.NET 序列化和反序列化 YAML 元数据
发布于 2018-08-12 12:44 更新于 2018-08-12 21:47
walterlv
2018/09/18
1.7K0
Python-时间及日期-08-文件修改时间
系统:Windows 7 编器:JetBrains PyCharm Community Edition 2018.2.2 x64
zishendianxia
2023/03/01
7020
Python-时间及日期-08-文件修改时间
Ubuntu 系统如何修改时间
在Ubuntu上,你可以使用以下三种方法来修改时间:date命令,timedatectl命令和hwclock命令。
用户8418197
2023/07/02
7K0
ubuntu修改时区和时间的方法
ubuntu16 运行命令dpkg-reconfigure tzdata,选择Asia-->Shanghai,确定,
战神伽罗
2019/07/24
12.1K0
ubuntu修改时区和时间的方法
Linux touch命令:创建文件及修改文件时间
既然知道了如何在 Linux 系统中创建目录,接下来你可能会想在这些目录中创建一些文件,可以使用 touch 命令。
芯动大师
2023/10/29
5880
Linux touch命令:创建文件及修改文件时间
使用 PowerShell 一键更新 Hexo 文章的 updated
使用 CI ( 例如 GitHub Actions ) 自动部署 Hexo 会导致所有文章 更新于 时间统一变成 GitHub Actions 生成部署的时间, 有3中解决方法:
yiyun
2022/04/01
9270
java记录访问时间_在java中记录上次访问时间和上次修改时间?
访问时间正在改变.我建议你使用Thread.sleep(100)或其他东西,然后看看这个问题是否仍然存在.
全栈程序员站长
2022/09/08
1.4K0
linux设置和修改时间与时区命令_linux 文件修改时间
时区设置用tzselect 命令来实现。但是通过tzselect命令设置TZ这个环境变量来选择的时区,需要将变量添加到.profile文件中。
全栈程序员站长
2022/11/17
6.6K0
自动更新文件中的修改时间
写博客多年,除了 EmacsTalk[3] 这个网站,我还有个 Keep Coding[4] 的个人博客。写博客的好处这里不想多说,可以参考这篇文章:
飞驰的西瓜
2022/07/26
9390
VBA: 获取文件夹内各文件的最新修改时间
文章背景: 在工作中,需要定期对原始数据进行备份。有时,需要查看文件夹内各个文件的最新修改时间,从而确保最新的测试数据得到了备份。因此,需要遍历各文件得到最新修改时间,这里提供两个自定义函数。
Exploring
2024/04/02
9510
VBA: 获取文件夹内各文件的最新修改时间
使用 C# 代码创建快捷方式文件
发布于 2015-04-07 04:48 更新于 2018-08-11 01:58
walterlv
2018/09/18
2.3K0
使用 C# 代码创建快捷方式文件
11.8 实现重置文件时间戳
如下代码是一段文件路径切割实现,通过传入文件路径,获取文件名和文件路径的功能。具体实现包括两个函数:GetFileName和GetFilePath。前者接收一个文件路径字符串,并返回该文件路径中的文件名;后者接收一个文件路径字符串,并返回该文件路径中除文件名以外的部分,即文件路径。
王瑞MVP
2023/11/21
2710
11.8 实现重置文件时间戳
FileInfo & DirectoryInfo
这节讲两个实例类,FileInfo和DirectoryInfo两个类,用于操作某个具体的文件或者目录。
宿春磊Charles
2022/03/29
2700
FileInfo & DirectoryInfo
Linux设置和修改时间与时区
时区设置用tzselect 命令来实现。但是通过tzselect命令设置TZ这个环境变量来选择的时区,需要将变量添加到.profile文件中。
菲宇
2019/06/11
29.5K0
Linux 修改时区和时间
CentOS 和 Ubuntu 的时区文件是 /etc/localtime , 但是在 CentOS7 以后 localtime 以及变成了一个链接文件 :
全栈程序员站长
2022/07/18
3.8K0
C#/.NET 中推荐的 Dispose 模式的实现
发布于 2015-02-05 02:10 更新于 2018-06-13 03:02
walterlv
2018/09/18
5700
C#学习笔记 文件操作
Directory和File类是两个静态类,可以静态地获取文件和文件夹的信息而无需实例化对象,这在只对某个文件或者文件夹执行一次操作的时候是很有用的。
乐百川
2022/05/05
4440
相关推荐
python 修改文件的创建时间、修改时间、访问时间
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验