📄 directoryinfo.cpp
字号:
#include "DirectoryInfo.h"
DirectoryInfo::DirectoryInfo(AnsiString BaseDir)
{
if (!DirectoryExists(BaseDir))
{
ShowMessage("创建类DirectoryInfo错误,指定的文件夹不存在!");
return;
}
DirectoryName = BaseDir;
FileNum = 0;
DirectoryNum = 0;
TogetherSize = 0;
}
DirectoryInfo::~DirectoryInfo()
{
}
void DirectoryInfo::Search()
{
NODE Head = {"", 0, 1, 0};
int i;
for (i=DirectoryName.Length()-1; DirectoryName[i] != '\\'; i--);
CopyMemory(Head.Name, &DirectoryName[i+1], DirectoryName.Length()-i);
Node.push_back(Head);
FindAll(DirectoryName);
}
void DirectoryInfo::FindAll(AnsiString Dir)
{
HANDLE fh=NULL;
WIN32_FIND_DATA wfd;
static int i=1;
try
{
fh=::FindFirstFile((Dir+"\\*.*").c_str(),&wfd);
for( ; fh!=INVALID_HANDLE_VALUE ; )
{
if(!(0==strcmp(wfd.cFileName,".") || 0==strcmp(wfd.cFileName,"..")))
{
NODE Next ;
strcpy(Next.Name, wfd.cFileName);
Next.Level = i;
Next.FileLength = 0;
Node.push_back(Next);
if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
Node[Node.size()-1].Flag = 1;
DirectoryNum++;
i++;
FindAll(Dir+"\\"+AnsiString(wfd.cFileName));
i--;
}
else
{
Node[Node.size()-1].Flag = 0;
Node[Node.size()-1].FileLength = wfd.nFileSizeHigh*sizeof(DWORD)+wfd.nFileSizeLow;
TogetherSize += Node[Node.size()-1].FileLength;
FileNum++;
}
}
if(0==::FindNextFile(fh,&wfd)) break;
}
}
__finally
{
::FindClose(fh);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -