在C++中,如何在Windows上获取文件的文件大小和日期戳记(给定其路径)?VC++:如何获取文件的时间和日期?
回答
您可以使用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;
}
}
然后将文件大小在WIN32_FIND_DATA的nFileSizeHigh
和nFileSizeLow
成员可用,时间戳在ftCreationTime
,ftLastAccessTime
和ftLastWriteTime
成员都可用。
GetFileSize/GetFileSizeEx和GetFileInformationByHandleEx与FileBasicInfo可用于检索此信息。
这两个函数都需要一个句柄,因此您需要在调用这些函数之前在路径上使用CreateFile。
// 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.
如果您在寻找便携性,您也可以使用POSIX stat。 Windows仍然支持它的使用。
要附加其他答案,请致电GetFileTime以获取文件时间。这个API也需要一个句柄,我认为比GetFileInformationByHandle API更容易。顺便说一句,GetFileInformationByHandleEx仅在VISTA及以上版本中受支持。
我发誓这个api存在,但我对GetFileTimes(注意s)的搜索没有任何结果。接得好。 – Michael 2009-06-26 23:28:42
无论如何,我的回答更多地意味着成为你的附加组件。我认为你是对这个问题更完整的回答,这就是我投票支持你的原因。 – 2009-06-27 00:42:26
- 1. Python:如何获取文件夹的创建日期和时间?
- 2. 如何获取C++文件编译的日期和时间?
- 3. 如何在MFC(VC++)中获取系统日期和时间中的AM/PM?
- 4. 从SD卡文件获取时间戳(日期和时间)
- 5. 如何在Python中获取文件的修改日期/时间?
- 6. 如何自动获取当前日期和时间到日期时间字段
- 7. 如何获取Meteor的今日日期和时间?
- 8. Servlet的获取日期和时间
- 9. 获取30天的日期和时间
- 10. CVS:获取文件被标记的时间和日期
- 11. 如何从JavaScript获取日期时间?
- 12. 如何使用C#获取文件生成日期时间和更新日期时间
- 13. 如何在vC++中获取windows时间?
- 14. 如何在Go中获取上次访问文件的日期和时间?
- 15. 如何获得日期和时间zendframework
- 16. 从mongodb文件_id字段中获取日期和时间
- 17. 如何从HTML页面文件中提取日期和时间?
- 18. PHP获取本地日期和时间
- 19. 获取毫秒日期和时间
- 20. 在c中获取日期和时间
- 21. 获取日期和时间在.NET
- 22. 如何提取Unix时间戳和获取日期
- 23. Android上的Twitter(如何获取Feed的日期和时间)
- 24. 如何获取日期时间大于特定日期时间的aws?
- 25. 如何获取日期和日期?
- 26. 如何从日期对象python获取日期时间?
- 27. 如何在CodeIgniter中仅从日期时间获取日期?
- 28. 如何从日期时间在sql中获取日期
- 29. 如何按时间间隔获取日期时间组
- 30. 如何从Java中的String中获取日期和时间?
好主意,虽然在WinCE中似乎不可用。给予好评! – Qwertie 2009-06-29 15:52:18