我正在编写一个程序,用于更改目录中所有文件的修改日期。
我可以明显地更改属性,但Windows无法识别。
private static void ChangeDateTypeOfFile(DateTime date, string filepath)
{
int state = PdfReader.TestPdfFile(filepath);
if (state != 0)
{
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
PdfDocument doc = PdfReader.Open(filepath);
doc.Info.ModificationDate = date;
doc.Save(filepath);
}
else
{
Console.WriteLine(state);
}
}
当我在更改属性之前和之后阅读该属性时,我可以看到区别,并且似乎可以正常工作。但是,在Windows File Explorer中,我看不到任何更改(例如title
和author
也没有)。最后修改日期更改为我运行代码的时间。
如何持续更改此信息?
编辑:
当我用记事本打开它时,我可以看到以下行:
/ModDate(D:20070129000000+01'00') //Set the date to 2007
文件资源管理器为什么不显示此信息?
答案 0 :(得分:2)
文件资源管理器为什么不显示此信息?
因为您的代码正在设置PDF的内部修改日期,该日期存储为该PDF内的元数据。该日期故意与Windows的文件时间戳无关,因为它们可以通过各种工具轻松地设置为任意值,而PDF修改日期只能由PDF编辑器工具设置。
答案 1 :(得分:-1)
感谢Antry
的评论:
private static void ChangeDate(DateTime date, string filepath)
{
File.SetLastWriteTime(filepath, date);
}
PdfSharp对于此任务来说是一个过大的杀伤力。