VC++;:如何获取文件的时间和日期? < P>如何在C++中获得文件的文件大小和日期戳,给定其路径?
,并且可以使用FielBaseCINFO检索此信息。< /P> 这两个函数都有一个句柄,因此在调用这些函数之前,需要在路径上使用CreateFileVC++;:如何获取文件的时间和日期? < P>如何在C++中获得文件的文件大小和日期戳,给定其路径?,c++,windows,file,date,size,C++,Windows,File,Date,Size,,并且可以使用FielBaseCINFO检索此信息。< /P> 这两个函数都有一个句柄,因此在调用这些函数之前,需要在路径上使用CreateFile // Error handling removed for brevity HANDLE hFile = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); LARGE
// Error handling removed for brevity
HANDLE hFile = CreateFile(path, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
LARGE_INTEGER fileSize;
GetFileSizeEx(hFile, &fileSize);
FILE_BASIC_INFO fileInfo);
GetFileInformationByHandle(hFile, FileBasicInfo, fileInfo, sizeof(fileInfo));
// fileInfo.CreationTime is when file was created.
如果你想要便携性,你也可以使用。Windows仍然支持它的使用。要附加另一个答案,只需调用以获取文件时间。这个API还需要一个句柄,我认为它比GetFileInformationByHandle API更容易。顺便说一句,GetFileInformationByHandleEx仅在VISTA及更高版本中受支持 您可以使用
FindFirstFile()
同时获取这两个文件,而无需打开它(这是GetFileSize()
和GetInformationByHandle()
所必需的)。然而,这有点费劲,所以一个小包装是有帮助的
bool get_file_information(LPCTSTR path, WIN32_FIND_DATA* data)
{
HANDLE h = FindFirstFile(path, &data);
if(INVALID_HANDLE_VALUE != h) {
return false;
} else {
FindClose(h);
return true;
}
}
然后,文件大小在
nFileSizeHigh
和nFileSizeLow
成员中可用,时间戳在ftCreationTime
、ftLastAccessTime
和ftLastWriteTime
成员中可用。我发誓这个api存在,但我对GetFileTimes(注意s)的搜索没有结果。接得好。反正我的答案更应该是你的补充。我认为你的答案更完整,这就是我投票支持你的原因。你的例子中有三个错误,应该注意如何解码时间戳:call FileTimeToSystemTime。无论如何,谢谢。匆忙写作!现在已修复。:-)