C++获取文件的创建时间和大小

使用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++论坛的回答,在此感谢。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值