如何MFC实现计算一个文件夹的大小
来源:互联网 发布:制作图片音乐的软件 编辑:程序博客网 时间:2024/05/16 17:10
class CCaculateFileSize
{
public:
CCaculateFileSize(void);
public:
~CCaculateFileSize(void);
public:
void CaculateDitrctorySize(CString strDirctoyPath ,long &size) ;
void CaculateSingleFileSize(CString strFileName ,long &size) ;
void CaculateFileCount ( CString strDirectory,long &count ) ;
void CacilateZipFileCount ( CString strZipFile,long &count) ;
};
函数的具体实现如下:
#include "StdAfx.h"
#include "CaculateFileSize.h"
CCaculateFileSize::CCaculateFileSize(void)
{
}
CCaculateFileSize::~CCaculateFileSize(void)
{
}
void CCaculateFileSize::CaculateDitrctorySize(CString strDirctoyPath ,long &size) //计算一个文件目录的大小。strDirctoyPath 是目录的路径名。
{
CFileFind ff ;//一个CFileFind的对象
CString szDir = strDirctoyPath;
if(szDir.Right(1)!= "\\")
{
szDir += "\\" ;
}
szDir += "*.*" ;//"*.*可以表示一个文件夹下的所有文件
BOOL res = ff.FindFile(szDir) ;
while(res)
{
res = ff.FindNextFile() ;
if(ff.IsDirectory() && !ff.IsDots())///如果是一个子目录,用递归继续往深一层找,IsDots判断是否为点--这个要说明一下,用过Dos的话,就应该知道,每个目录//下都有缺省的两个目录,名称分别为 '. '和 '.. ',分别代表上一层目录和本层目录。因此,当我们在遍历目录下文件时,需要过滤掉这两个缺省目录。
{
CString strPath = ff.GetFilePath();
CaculateDitrctorySize( strPath ,size) ;
}
else if(!ff.IsDirectory() && !ff.IsDots())
{
//显示当前访问的文件(完整路径)
CString strPath = ff.GetFilePath();
HANDLE hFile=CreateFile( strPath,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL); //This function creates, opens, or truncates a file可以创建,打开或者裁断一个文件
size = size + nFileSize ;
}
}
}
void CCaculateFileSize::CaculateSingleFileSize(CString strFileName , long &size)
{
HANDLE hFile=CreateFile( strFileName,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
long nFileSize=GetFileSize(hFile,NULL);
size = nFileSize ;
}
void CCaculateFileSize::CaculateFileCount ( CString strDirectory,long &count )
{
CFileFind ff ;
CString szDir = strDirectory ;
if(szDir.Right(1)!= "\\")
{
szDir += "\\" ;
}
szDir += "*.*" ;
BOOL res = ff.FindFile(szDir) ;
if(res == 0)//说明是单个文件
{
count += 1;
}
while(res)
{
res = ff.FindNextFile() ;
if(ff.IsDirectory() && !ff.IsDots())///如果是一个子目录,用递归继续往深一层找
{
CString strPath = ff.GetFilePath();
CaculateFileCount( strPath ,count) ;
}
else if(!ff.IsDirectory() && !ff.IsDots())
{
//显示当前访问的文件(完整路径)
count ++ ;
}
}
}
void CCaculateFileSize::CacilateZipFileCount ( CString strZipFile,long &count)
{
HZIP hz; //Zip文件句柄
ZIPENTRY ze ;
hz = OpenZip( strZipFile ,0) ;
if(hz == 0)
{
AfxMessageBox("打开ZIP文件失败") ;
return ;
}
GetZipItem(hz,-1,&ze) ;
count += ze.index;
CloseZip(hz) ;
}
- 如何MFC实现计算一个文件夹的大小
- C#计算一个文件夹的大小
- C#计算一个文件夹的大小
- 计算文件夹的大小
- 如何获取一个文件夹的大小
- VC如何计算文件夹大小
- 如何计算一个串的大小
- 一个计算文件夹大小的Java小程序
- 一个mfc实现的简单计算功能
- 计算文件夹大小,当前目录下个文件夹的大小
- 键盘录入一个文件夹路径,可以计算文件夹大小
- 统计一个文件夹的大小
- 一个遍历文件夹内容,显示文件名,大小等信息的MFC程序
- ios计算文件和文件夹的大小
- 计算文件夹下文件的总大小
- asp.net中计算文件夹的大小
- 嵌入式 计算Linux下文件夹的大小
- 计算文件夹下文件的总大小
- 左外连接与where语句的区别
- Win API中SendMessage和PostMessage的区别
- 英利9160访问Ubuntu的nfs
- 云计算仿真工具中文注释CloudletScheduler.java
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- 如何MFC实现计算一个文件夹的大小
- 错误argument of type "char *" is incompatible with parameter of type "LPCWSTR"的解决方法
- 学习笔记之C#类的构造方法
- 云计算仿真工具中文注释CloudletSchedulerDynamicWorkload.java
- C#(winform)文本框只能输入数字和退格键和小数点
- Android自定义属性
- WINDOWS消息大全
- 云计算仿真工具中文注释CloudletSchedulerSpaceShared.java
- 理解C++中复杂的指针声明