在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. 如何獲取日期和時間(VBS)
- 4. 如何在MFC(VC++)中獲取系統日期和時間中的AM/PM?
- 5. VC++分開日期和時間
- 6. 如何獲取日期時間月開始和結束日期?
- 7. 如何在Python中獲取文件的修改日期/時間?
- 8. 如何自動獲取當前日期和時間到日期時間字段
- 9. 如何獲取和比較python中給定文件的日期和時間
- 10. 在Windows XP上覆制文件時獲取時間和日期
- 11. 如何獲取Meteor的今日日期和時間?
- 12. 獲取30天的日期和時間
- 13. Servlet的獲取日期和時間
- 14. CVS:獲取文件被標記的時間和日期
- 15. 如何從JavaScript獲取日期時間?
- 16. 如何使用C#獲取文件生成日期時間和更新日期時間
- 17. 如何獲得日期時間,日期和時間列的時間差
- 18. 如何在vC++中獲取windows時間?
- 19. 如何獲取當地時區的當前日期和時間?
- 20. 如何在不同的時區獲取日期和時間?
- 21. 如何在Go中獲取上次訪問文件的日期和時間?
- 22. 如何獲得日期和時間
- 23. 如何獲得日期和時間zendframework
- 24. 如何獲取日期和日期之間的差異
- 25. 如何從圖像文件中讀取日期和時間
- 26. 如何從HTML頁面文件中提取日期和時間?
- 27. 從mongodb文件_id字段中獲取日期和時間
- 28. PHP獲取本地日期和時間
- 29. 獲取日期和時間在.NET
- 30. 獲取毫秒日期和時間
好主意,雖然在WinCE中似乎不可用。給予好評! – Qwertie 2009-06-29 15:52:18