【发布时间】:2020-12-20 20:29:33
【问题描述】:
我正在查看完全相同的文件,它返回的创建时间不同:
-
FileInfo实例我作为参数传递给函数 - 函数中的
IEnumerable<FileInfo>。
请看下面,我看的是同一个文件(名称相同,见红框),但创建时间不同(见绿框)。这怎么可能,我该如何解决?他们应该是一样的。事实上,这个文件 (OptionTraderLog-2020-08-31_16_60_02_000018.tce) 甚至不应该出现在 Linq 表达式 (B) 中,因为我正在寻找创建时间大于这个文件的所有文件。
查看该函数的相关部分:
protected override FileInfo GetNextFile(FileInfo currentLiveFile)
{
// currentLiveFile is A)
// IEnumerable generated below is B)
var allFilesInDirectory = currentLiveFile.Directory.GetFiles()
.Where(f => f.CreationTime > currentLiveFile.CreationTime)
.Where(f => Path.GetExtension(f.Name) == _fileExtension)
.OrderBy(f => f.CreationTime);
// Rest of function...
}
windows 指定的创建时间与上午 10:34:35 对齐,但创建时间和写入时间相同。我认为 Windows 正在考虑将 CreationTime 视为 WriteTime:
【问题讨论】:
-
Windows 允许任意修改文件的创建、修改、最后写入和最后访问时间。根据底层文件系统或网络重定向器,内存文件控制块 (FCB) 或磁盘文件记录(例如 NTFS 中的 MFT 记录)中的时间戳可能与目录条目不同步。特别是如果文件有硬链接,给定硬链接的目录条目将反映上次使用该链接访问它的时间戳,这可能与 FCB 或文件记录中的当前值有很大不同。目录项不可靠。
标签: c# windows ienumerable fileinfo