博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC 文件与文件夹相关操作
阅读量:6246 次
发布时间:2019-06-22

本文共 2689 字,大约阅读时间需要 8 分钟。

计算指定文件夹的总大小

实现函数(注意该函数是写在对话框类中的,所以需要在类中做声明什么的, 这里没有给出)

DWORD64  CMFCGETFOLDERSIZEDlg::GetFolderSize(CString szPath)//获得文件夹大小,返回值大小单位为M{	CString szFileFilter = szPath + L"\\*.*";	HANDLE hFind = NULL;	WIN32_FIND_DATA fileinfo;//保存文件信息的结构体,个人理解有可能是文件,也有可能是目录	DWORD64    dwSize = 0;	hFind = FindFirstFile(szFileFilter, &fileinfo);	do	{		if (fileinfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果目标为文件夹即目录则为真		{			CString myfilename = fileinfo.cFileName;			if (myfilename != "." && myfilename !="..")//“.”表示当前目录,“..”表示上一级目录,只有在非两者的情况下才意味着该对象为我们指定文件夹的子文件夹			{				CString sztmp;				sztmp = szPath +L"\\"+ fileinfo.cFileName;				dwSize = dwSize + GetFolderSize(sztmp);//递归得到子文件夹大小			}		}		else		{			dwSize += fileinfo.nFileSizeLow;		}		} while (FindNextFile(hFind, &fileinfo));	FindClose(hFind);	return dwSize;}
调用该函数

void CMFCGETFOLDERSIZEDlg::OnBnClickedOk(){	DWORD64  myfoldersize = GetFolderSize(L"E:\\testfolder");	CString mylong;	mylong.Format(L"文件夹大小为:%ld", myfoldersize);	MessageBox(mylong);}

删除文件夹(包括非空文件夹)

void CMFCGETFOLDERSIZEDlg::myDeleteDirectory(CString directory_path)   //删除一个文件夹下的所有内容{	CFileFind finder;	CString path;	path = directory_path + L"\\*.*";	BOOL bWorking = finder.FindFile(path);	while (bWorking)	{		bWorking = finder.FindNextFile();		if (finder.IsDirectory() && !finder.IsDots())//处理文件夹		{			myDeleteDirectory(finder.GetFilePath());//递归删除文件			RemoveDirectory(finder.GetFilePath());//删除已被删除文件的文件夹		}		else//处理文件		{			DeleteFile(finder.GetFilePath());		}	}}
调用该函数

void CMFCGETFOLDERSIZEDlg::OnBnClickedButtonDelete(){	myDeleteDirectory(L"E:\\testfolder");//删除文件夹下所有文件  	RemoveDirectory(L"E:\\testfolder");//删除该空文件夹  }
获得指定文件夹下的子文件夹名称(无递归,只获得一层)函数

void CMFCGETFOLDERSIZEDlg::GetFolderSonName(CString directory_path)//获得文件夹下的子文件夹名称{	CFileFind finder;	CString path;	path = directory_path + L"\\*.*";	BOOL bWorking = finder.FindFile(path);	while (bWorking)	{		bWorking = finder.FindNextFile();		if (finder.IsDirectory() && !finder.IsDots())//处理文件夹		{			CString SonFolderName = finder.GetFileName();			MessageBox(SonFolderName);		}	}}
调用该函数
void CMFCGETFOLDERSIZEDlg::OnBnClickedButtonFoldername(){	GetFolderSonName(L"E:\\testfolder");}

获取系统时间创建文件夹
void CMFCGETFOLDERSIZEDlg::GetSystimeCreatFolder(){	SYSTEMTIME sys;	GetLocalTime(&sys);//获得系统时间	CString myname;	myname.Format(L"%4d%02d%02d", sys.wYear, sys.wMonth, sys.wDay);	CFileFind filefind;	CString strPathname = L"d:\\" + myname;	if (filefind.FindFile(strPathname))//判断文件夹是否存在,不存在则创建		MessageBox(L"文件存在");	else	{		MessageBox(L"文件不存在,创建该文件夹");		CreateDirectory(strPathname,NULL);	}	}
调用该函数

void CMFCGETFOLDERSIZEDlg::OnBnClickedButton3(){	GetSystimeCreatFolder();}

转载于:https://www.cnblogs.com/weixinhum/p/3916672.html

你可能感兴趣的文章
iphone-common-codes-ccteam源代码 CCUIApplication.m
查看>>
展开和折叠GridView行
查看>>
SharePoint PeopleEditor 控件的使用
查看>>
删除mysql__转
查看>>
python+selenium的使用
查看>>
python2.7中MySQLdb的安装与使用详解
查看>>
知乎技术方案初探[转]
查看>>
Java中的Thread与Runnable的区别
查看>>
2018/11/29 一个64位操作系统的设计与实现 02 (安装nasm)
查看>>
python(48):re.split 多分隔符
查看>>
nyoj746 整数划分(四)
查看>>
FZU 1894 志愿者选拔 单调队列
查看>>
asp.net的Request.ServerVariables参数说明
查看>>
eclipse中配置maven
查看>>
get方法与post方法的使用
查看>>
一步一步学习SignalR进行实时通信_1_简单介绍
查看>>
SPSS—回归—多元线性回归(转)
查看>>
webapi文档描述-swagger
查看>>
git使用笔记
查看>>
null与undefined
查看>>