Ich kann nicht scheinen, einen zuverlässigen Zeitstempel zu erhalten, der winapi Funktionen verwendet. Zum Beispiel:winapi - Non-Sense-Datei Zeitstempel?
int main(int argc, char *argv[]) { HANDLE file; BY_HANDLE_FILE_INFORMATION finfo; SYSTEMTIME systime; file = CreateFile("test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); GetFileInformationByHandle(file,&finfo); FileTimeToSystemTime(&finfo.ftLastWriteTime, &systime); printf(" %s %02d:%02d:%02d %d/%d/%d\n", "test.txt", systime.wHour,systime.wMinute,systime.wSecond,systime.wDay,systime.wMonth,systime.wYear); }
gibt Nicht-Sinn auf alle meine Dateien wie:
test.txt 00:03:30 33/5/3
wday Werte außerhalb des Bereichs zu haben scheint, 1-31 und die Zeiten und Daten sind völlig falsch. Alle anderen Werte in BY_HANDLE_FILE_INFORMATION wie Name und Größe sind korrekt, und in I full code überprüfe ich auf Fehler von allen Funktionen, aber sie geben alle zurück. Wer weiß, was ich falsch mache?
Entschuldigung, ich habe versucht, auf nur relavent Code zu reduzieren, es gibt nichts falsch mit diesem Teil, LARGE_INTEGER Dateigröße; filesize.LowPart = finfo.nFileSizeLow; filesize.HighPart = finfo.nFileSizeHigh; Die Dateigröße wird korrekt gemeldet. – Myforwik
Okay, versuchen Sie bitte, filesize.QuadPart in filesize.LowPart in Ihrer printf-Anweisung zu ändern und sehen Sie, ob das hilft. –
Ersetzen Sie% lld durch% d, wenn Sie zu filesize.LowPart wechseln. – Michael