0
winapi関数を使って信頼できるタイムスタンプを取得できないようです。例えば:のようなwinapi - 非センスファイルのタイムスタンプ?
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); }
すべての私のファイル上の非感覚を与える:
test.txt 00:03:30 33/5/3
wDayは1〜31の範囲外の値を持っているようだし、時間と日付は完全に間違っています。名前とサイズのようなBY_HANDLE_FILE_INFORMATIONの他のすべての値は正しいです。完全なコードでは、すべての関数のエラーをチェックしますが、すべてが返されます。誰でも私が間違っていることを知っていますか?
申し訳ありませんが、私はコードをrelaventだけに削減しようとしましたが、その部分に何も問題はありません LARGE_INTEGERファイルサイズ; filesize.LowPart = finfo.nFileSizeLow; filesize.HighPart = finfo.nFileSizeHigh; ファイルサイズが正しく報告されます。 – Myforwik
さて、あなたのprintfステートメントのfilesize.QuadPartをfilesize.LowPartに変更してみてください。 –
filesize.LowPartに切り替えると%lldを%dに置き換えます。 – Michael