VC如何计算文件夹大小
百度了几篇“VC下如何计算文件夹大小”但是发现代码好像有点问题,所以码了这段代码
main.cpp
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
/*
* 取得指定文件夹大小
*/
void getFoldersize(const char* path, unsigned __int64 *size)
{
if (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(path))
{
WIN32_FIND_DATAA fad;
HANDLE hfile = FindFirstFileA((string(path) + '\\' + "*.*").c_str(), &fad);
BOOL result = true;
while (result)
{
if (string(fad.cFileName) != string(".") && string(fad.cFileName) != string(".."))
{
getFoldersize((string(path) + '\\' + fad.cFileName).c_str(), size);
}
result = FindNextFileA(hfile, &fad);
}
FindClose(hfile);
} else {
WIN32_FILE_ATTRIBUTE_DATA fad;
if (GetFileAttributesExA(path, GetFileExInfoStandard, &fad))
*size += ((ULONG64)fad.nFileSizeHigh & 0xffffffff) << 32 | (ULONG64)fad.nFileSizeLow;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
if (argc != 2)
{
cout << "输入路径" << endl;
return -1;
}
unsigned __int64 foldersize = 0;
getFoldersize(argv[1], &foldersize);
cout << argv[1] << "文件夹大小为:" << foldersize << "字节" << endl;
return 0;
}
getFoldersize函数接受路径名(例如d:\\data2)之后计算data2文件夹包含所有内容大小。
测试图
data2文件夹(刀塔安装文件夹)的实际大小如下
本篇完