#include <iostream>
#include <windows.h>
#include <string>
// 函数名:获取文件夹尺寸
// 返回类型:ULONGLONG
// 参数:
// folderPath - 文件夹路径
// includeSubfolders - 是否包括所有子文件夹
// 描述:获取指定文件夹及其所有子文件夹中的文件尺寸总和。
ULONGLONG 获取文件夹尺寸(const std::wstring& folderPath, bool includeSubfolders) {
ULONGLONG totalSize = 0;
// 构建文件夹路径
std::wstring searchPath = folderPath + L"\\*.*";
WIN32_FIND_DATA findFileData;
HANDLE hFind = FindFirstFile(searchPath.c_str(), &findFileData);
if (hFind != INVALID_HANDLE_VALUE) {
do {
const std::wstring fileName = findFileData.cFileName;
const std::wstring filePath = folderPath + L"\\" + fileName;
if (fileName != L"." && fileName != L"..") {
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if (includeSubfolders) {
// 如果是子文件夹且包括子文件夹,则递归计算子文件夹的尺寸
ULONGLONG subfolderSize = 获取文件夹尺寸(filePath, includeSubfolders);
totalSize += subfolderSize;
}
}
else {
// 如果是文件,则累加文件大小
ULONGLONG fileSize = static_cast<ULONGLONG>(findFileData.nFileSizeHigh) << 32 | findFileData.nFileSizeLow;
totalSize += fileSize;
}
}
} while (FindNextFile(hFind, &findFileData) != 0);
FindClose(hFind);
}
return totalSize;
}
int main() {
std::locale::global(std::locale("")); // Set the global locale to support wide characters
std::wstring folderPath = L"Z:\\"; // 请替换为您要检查的文件夹路径
ULONGLONG folderSize = 获取文件夹尺寸(folderPath, true);
std::wcout << L"文件夹尺寸(字节): " << folderSize << std::endl;
return 0;
}
获取文件夹尺寸
最新推荐文章于 2024-07-14 15:36:20 发布