📄 subject_40658.htm
字号:
<p>
序号:40658 发表者:cmoth 发表日期:2003-05-20 15:47:34
<br>主题:怎么样查找一个目录及其子目录下的所有文件?
<br>内容:我在网上找到一些写好的函数,但执行起来速度好像比较慢,那位兄弟有不用递归实现的方法吗?<BR>另外偷偷的问一声:CQueue是MFC的类吗?引用它需要包含那些头文件?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:ohye212 回复日期:2003-05-20 15:51:34
<br>内容:#include <windows.h><BR>#include <shlobj.h><BR><BR>//浏览目录.<BR>void BrowseFolder( void )<BR>{<BR> TCHAR path[MAX_PATH];<BR> BROWSEINFO bi = { 0 };<BR> bi.lpszTitle = ("递归调用所有目录");<BR> LPITEMIDLIST pidl = SHBrowseForFolder ( &bi );<BR> <BR> if ( pidl != 0 )<BR> {<BR> // 获取目录路径<BR> SHGetPathFromIDList ( pidl, path );<BR><BR> //设置为当前路径<BR> SetCurrentDirectory ( path );<BR> <BR> //搜索所有子目录<BR> SearchFolder( path );<BR><BR><BR> // 释放内存<BR> IMalloc * imalloc = 0;<BR> if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )<BR> {<BR> imalloc->Free ( pidl );<BR> imalloc->Release ( );<BR> }<BR>}<BR><BR><BR>//搜索其下所有子目录及文件.<BR>void SearchFolder( TCHAR * path )<BR>{<BR> WIN32_FIND_DATA FindFileData;<BR> HANDLE hFind;<BR><BR> TCHAR filename[ MAX_PATH + 256 ];<BR> TCHAR pathbak[ MAX_PATH ];<BR><BR> //复制初始用户选择目录<BR> strcpy( pathbak, path );<BR><BR> //寻找第一个文件<BR> hFind = FindFirstFile ( "*.*", &FindFileData );<BR><BR> //搜索所有文件及子目录<BR> do<BR> {<BR> if ( hFind != INVALID_HANDLE_VALUE )<BR> {<BR> //如果是当前目录或父目录,跳过<BR> if ( ! ( strcmp( FindFileData.cFileName, "." ) ) || ! ( strcmp( FindFileData.cFileName, ".." ) ) )<BR> {<BR> continue;<BR> }<BR><BR> //恢复初始用户选择目录<BR> strcpy( path, pathbak );<BR><BR> //列出所有发现的文件<BR> sprintf( path, "%s\\%s", path, FindFileData.cFileName );<BR><BR> //如果 SetCurrentDirectory 成功的话,则它是一个目录,递归调用继续搜索子目录<BR> if ( ( SetCurrentDirectory( path ) ) )<BR> {<BR> SearchFolder( path );<BR> }<BR> <BR> //插入文件及路径名到列表框m_listbox_hwnd中<BR> SendMessage( m_listbox_hwnd, LB_ADDSTRING, 0, path ); //<--INSERT WHAT YOU WANT DONE HERE!<BR> }<BR> }<BR> while ( FindNextFile ( hFind, &FindFileData ) && hFind != INVALID_HANDLE_VALUE );<BR><BR> FindClose ( hFind );<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2003-05-20 16:01:46
<br>内容:谢谢ohye212兄 ,不过我现在最想能有一个不用递归实现的版本。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:明了 回复日期:2003-05-23 18:04:31
<br>内容:用链表把找到的目录放入链表<BR>查找链表中的目录,直到链表为空<BR>附程序
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -