gpt4 book ai didi

c++ - 最后写入 FILETIME 总是返回当前时间

转载 作者:行者123 更新时间:2023-11-30 01:13:42 28 4
gpt4 key购买 nike

我需要将文件的最后修改时间与数据库中存储的日期时间进行比较。我最初看了this question开始。

我目前正在为文件的最后一次写入获取 FILETIME,将其转换为 SYSTEMTIME。然后,我使用该 SYSTEMTIME 创建一个 TDateTime 对象,我可以将其用于比较。然而,FileModifiedDT 变量始终显示为当前时间,尽管文件之前已被修改。

FILETIME lastWriteTime;

String * FileNamePtr = new String( FileName );

GetFileTime( FileNamePtr, NULL, NULL, &lastWriteTime );

SYSTEMTIME systemTime;
FileTimeToSystemTime( &lastWriteTime, &systemTime );

TDateTime * FileModifiedDT = new TDateTime( systemTime.wYear, systemTime.wMonth,
systemTime.wDay, systemTime.wHour,
systemTime.wMinute, systemTime.wSecond,
systemTime.wMilliseconds );

我是否以某种方式误用了 GetFileTime?有没有更好的方法来解决这个问题?

最佳答案

错误是

String * FileNamePtr = new String( FileName );
GetFileTime( FileNamePtr, NULL, NULL, &lastWriteTime );

根据documentation ,第一个参数必须是 CreateFile 创建的文件句柄,不能是其他任何东西。

因此你需要这样的东西:

HANDLE fileHandle = CreateFile(
FileName, //LPCTSTR
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);

if ( fileHandle != INVALID_HANDLE )
{
GetFileTime( fileHandle, NULL, NULL, &lastWriteTime );
CloseHandle( fileHandle );
}
else
{
// error, do something else...
}

关于c++ - 最后写入 FILETIME 总是返回当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590835/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com