使用C++获取文件的创建时间和大小。话不多说直接上代码:
#include<Windows.h>
#include<iostream>
#include<string>
#include <fstream>
#include <io.h>
using namespace std;
BOOL GetFileTime(HANDLE hFile, LPSTR lpszCreationTime)
{
FILETIME ftCreate, ftAccess, ftWrite;
SYSTEMTIME stUTC1, stLocal1;
// 获取 FileTime
if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite)) {
cout << "error!" << endl;
return FALSE;
}
//转换: FileTime --> LocalTime
FileTimeToSystemTime(&ftCreate, &stUTC1);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC1, &stLocal1);
//获取创建时间
wsprintf(lpszCreationTime, "%02d/%02d/%02d %02d:%02d",
stLocal1.wYear, stLocal1.wMonth, stLocal1.wDay,
stLocal1.wHour, stLocal1.wMinute);
return TRUE;
}
int main() {
HANDLE hFile;
TCHAR szCreationTime[30];
hFile = CreateFile("D:\\caogao\\aaa.exe", 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
GetFileTime(hFile, szCreationTime);
if (hFile == INVALID_HANDLE_VALUE) {
cout << "error!" << endl;
return -1;
}
int size = GetFileSize(hFile, NULL);
cout << "创建时间:" << szCreationTime << endl;
cout << "文件大小:" << size/1024+1 <<" KB"<< endl;
CloseHandle(hFile);
return 0;
}
运行结果截图:
需要注意的是,CreateFile中的第一个参数中,文件路径的‘\’应写成‘\\’。
GetFileSize()函数返回的大小单位是B,这里稍作变换变成KB。
本博客参考了一位大佬@horisly在一个C++论坛的回答,在此感谢。