我正在编写一个程序来更改目录中所有文件的修改日期。
我可以显然更改属性,但不能让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文件资源管理器中,我看不到任何变化(例如,也没有title
和author
)。最后修改日期更改为我运行代码时。
如何持续更改此信息?
编辑:
当我用记事本打开它时,我可以看到该行:
/ModDate(D:20070129000000+01'00') //Set the date to 2007
为什么文件资源管理器不显示此信息?
为什么文件资源管理器不显示此信息?
因为您的代码正在设置PDF的内部修改日期,所以该内容将作为元数据存储在该PDF中。这个日期故意与Windows的文件时间戳无关,因为这些日期可以通过各种工具轻松设置为任意值,而PDF修改日期只能通过PDF编辑器工具设置。
感谢Antry
的评论:
private static void ChangeDate(DateTime date, string filepath)
{
File.SetLastWriteTime(filepath, date);
}
PdfSharp对于这项任务来说太过分了。