溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#/.NET如何讀取或修改文件的創(chuàng)建時(shí)間及修改時(shí)間

發(fā)布時(shí)間:2021-06-07 11:20:35 來源:億速云 閱讀:274 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下C#/.NET如何讀取或修改文件的創(chuàng)建時(shí)間及修改時(shí)間,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

前言

手工在博客中添加 Front Matter 文件頭可是個(gè)相當(dāng)費(fèi)事兒的做法,這種事情就應(yīng)該自動(dòng)完成。

.NET 中提供了非常方便的修改文件創(chuàng)建時(shí)間的方法,使用這種方法,能夠幫助自動(dòng)完成一部分文件頭的編寫或者更新。

相關(guān)類型

.NET 中提供了兩個(gè)不同的設(shè)置創(chuàng)建和修改時(shí)間的入口:

File 靜態(tài)類

FileInfo 類

C#/.NET如何讀取或修改文件的創(chuàng)建時(shí)間及修改時(shí)間

▲ File 靜態(tài)類的方法

C#/.NET如何讀取或修改文件的創(chuàng)建時(shí)間及修改時(shí)間

▲ FileInfo 類的方法

很明顯,使用 FileInfo 類可以使用屬性直接獲取和賦值,用法上會(huì)比 File 方便,不過需要一個(gè) FileInfo 的實(shí)例。

修改時(shí)間

我期待能夠讀取文件的創(chuàng)建和修改時(shí)間來獲知博客文章的發(fā)布和修改時(shí)間。不過在此之前,我需要先根據(jù) Markdown 文件元數(shù)據(jù)更新文件時(shí)間。

private void FixFileDate(FileInfo file, DateTimeOffset createdTime, DateTimeOffset modifiedTime)
{
 // 更改文件的創(chuàng)建時(shí)間。
 file.CreationTimeUtc = createdTime.UtcDateTime;
 // 更改文件的更新時(shí)間。
 file.LastWriteTimeUtc = modifiedTime.UtcDateTime;
 // 更改文件最近一次訪問的時(shí)間。
 file.LastAccessTimeUtc = DateTimeOffset.Now.UtcDateTime;
}

至于如何獲取 Markdown 文件元數(shù)據(jù)中的時(shí)間,可以使用 YamlDotNet(當(dāng)然,需要自己提取 YAML 元數(shù)據(jù)頭)。

讀取時(shí)間

當(dāng)此后需要使用文件的創(chuàng)建時(shí)間來更新 YAML 元數(shù)據(jù)時(shí),只需要讀取這幾個(gè)屬性即可。

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 元數(shù)據(jù)。
}

關(guān)于 UTC 時(shí)間

也許你注意到以上我使用的時(shí)間類型都是 DateTimeOffset 而不是 DateTime,這是因?yàn)?DateTimeOffset 中記錄了時(shí)區(qū)信息,不至于在使用的過程中丟掉時(shí)區(qū)信息,出現(xiàn)重復(fù)時(shí)間轉(zhuǎn)換,發(fā)生時(shí)間錯(cuò)誤。

看完了這篇文章,相信你對(duì)“C#/.NET如何讀取或修改文件的創(chuàng)建時(shí)間及修改時(shí)間”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI