正在获取文件creationTime c#
本文关键字:creationTime 文件 获取 | 更新日期: 2024-08-10 02:04:26
在使用WIN32_FIND_DATA通过FindFirstFile和FindFNextFile获取文件时,我试图执行一项任务,该任务要求我枚举两个不同目录中的文件,然后我需要从第一个目录中找出比第二个目录中的任何文件都早创建的文件。问题是CreationTime函数为所有文件返回了错误的统一值,比如1/1/1601凌晨3:00。有人知道如何获得正确的创建时间吗?也许这与fCreationTime的FILETIME类型有关,我不知道。
我有。。。
> struct NameAndDate
> {
> public string Name;
> public DateTime Date;
> public NameAndDate(string name, DateTime date)
> {
> Name = name;
> Date = date;
> }
> }
for (int i = 0; i < AllFiles.Count; i++)
> tmp[i] = new NameAndDate(AllFiles[i], File.GetCreationTime(AllFiles[i]));
ALLFiles是一个给定目录中的文件列表,我将这些文件存储在一个类型结构的数组中,该数组包含文件名及其创建时间。这将使我更容易完成比较任务。请注意,我也尝试过使用。。
FileInfo fd = new FileInfo(AllFiles[i]);
tmp[i] = new NameAndDate(AllFiles[i], fd.CreationTime);
您可能需要查阅文档,特别是Remarks
部分:
https://msdn.microsoft.com/en-us/library/system.io.file.getcreationtime(v=vs.110).aspx
它提出了2点,你应该找到有趣的
1-可能不准确:
此方法可能返回不准确的值,因为它使用的本机函数的值可能不会被操作系统持续更新。
2-无论出于何种原因,如果未找到文件,它将返回您提到的日期值:
如果路径参数中描述的文件不存在,此方法将返回公元1601年1月1日午夜12:00。(C.E.)协调世界时(UTC),调整为当地时间。
仔细检查您正在枚举的文件名是否确实存在。。。!
HTH、
程序的正确版本--
public struct NameAndDate
{
public string Name;
public DateTime Date;
public NameAndDate(string name, DateTime date)
{
Name = name;
Date = date;
}
}
DirectoryInfo d = new DirectoryInfo(@"C:'TestPath");
FileInfo[] AllFiles = d.GetFiles("*.*"); // Whatever file type you want.
NameAndDate[] tmp = new NameAndDate[AllFiles.Length];
for (int i = 0; i < AllFiles.Length; i++)
tmp[i] = new NameAndDate(AllFiles[i].Name, AllFiles[i].CreationTime);
foreach(var v in tmp)
Console.WriteLine(v.Date);