之前有人让我写一个MFC的小程序,实现的功能是输入一个目录,输出此目录下的所有文件和所占的空间大小。刚开始真是太苦逼了,因为MFC我已经好久都没碰了,但是,你懂了啦,还是做了,查阅了好多的代码,终于找到了一个合适的函数,当然是自己写的递归函数,可以查找所有的文件,但是当文件数特别多时,就会出问题了,很费时,如何开启线程的方面C++我没有学习,所以就不知道了。大家有兴趣的可以自己研究。好了,我把控制台的程序给出,如何转到MFC就很简单我就不说了。
#include "writefile.h"
#include <Windows.h>
#include "iostream.h"
void FindFileInDir(char* lpPath)
{
long size=0;
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFind,lpPath);
strcat(szFind,"\\");
strcat(szFind,FindFileData.cFileName);
FindFileInDir(szFind);
}
}
else
{
size+=FindFileData.nFileSizeLow;
cout << FindFileData.cFileName<<" "<<size<<endl;
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
int main()
{
FindFileInDir( "d:\\a" ); //test
return 0;
}