用VisualC++6.0递归查找目录树

王朝vc·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

在SDI项目内,通过使用CFileDialog和CFileFind类,不仅可以实现Windows桌面上现有的查找功能,而且可以灵活扩展查找条件.例如,下面的程序将在VisualC++6.0的Output窗口内逐行输出c:\windows下所有长度小于500字节的只读文件:

#include < direct.h > /*含有

_getcwd,_chdir原型*/

void f0(){

char x[256],y[256];

CFileDialog fd(TRUE);

/*用TRUE值构造"File Open"对话框*/

_getcwd(x,256); /*

当前工作目录存入x数组*/

if (fd.DoModal()==IDOK){

/*在CfileDialog对话过程中,

先选定c:\windows目录,

再选定其下一普通文件,如Notepad.exe,

或输入一不存在的文件,如f0.non*/

_getcwd(y,256);

/*当前工作目录c:\windows存入y数组*/

f1(y); /*用y内容调用f1函数*/

}

_chdir(x); /*当前工作目录置回x内容*/

}

void f1(CString x){

BOOL b;CFileFind f;

/*考虑到递归,只能使用局部变量*/

_chdir(x); b=f.FindFile("*.*");

/*当前工作目录置成实参x,

然后查其下所有文件*/

while(b){

b=f.FindNextFile();

if (f.IsDirectory()){

/*当前文件是目录*/

if (!f.IsDots())

{ f1(f.GetFilePath());

/*目录文件非"."和"..",

则用全路径调用自身*/

}

}

else

if (f.IsReadOnly()&&f.GetLength

()< 500){

afxDump< < "\n";

afxDump< < f.GetFilePath();

/*输出长度小于500字节的只读文件的文件*/

}

}

}

待程序正常结束后,Output窗口将显示执行结果.另外,经用CmemoryState类检查,已证实此段程序未导致内存泄漏.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航