我想从服务器下载文件,如果它比我光盘上的文件更新。
我写了以下代码:
bool bDownload = true;
HANDLE hFile = CreateFile(strFileLocal, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
FILETIME ftLocal = { 0 };
FILETIME ftWrite = { 0 }; // only for testing
GetFileTime(hFile, &ftLocal, NULL, &ftWrite);
FILETIME ftRemote = arrTimes[i]; //get size from server
if (ftLocal.dwLowDateTime >= ftRemote.dwLowDateTime && ftLocal.dwHighDateTime >= ftRemote.dwHighDateTime)
{
bDownload = false;
}
CloseHandle(hFile);
}
完成此操作后,我下载文件并将文件时间从服务器设置为文件:
//set file date
HANDLE hFile = CreateFile(strFileLocal, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
FILETIME ftRemote = arrTimes[i];
SetFileTime(hFile, &ftRemote, NULL, &ftRemote);
CloseHandle(hFile);
}
现在我的问题: 如果我用新的创建时间替换磁盘上的文件,GetFileTime将读取我设置的时间。但是在Windows中的文件浏览器中,文件具有新的创建时间。
为了测试我试着读上次写作时间。但这与创作时间相同。 非常感谢。
如何解决此问题?我有什么问题吗?