Windows下遍历文件目录

Posted 牧秦丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows下遍历文件目录相关的知识,希望对你有一定的参考价值。

最近用到遍历文件目录,总结一下:

#include <Windows.h>

WIN32_FIND_DATA fndData;
HANDLE hFnd = INVALID_HANDLE_VALUE;

hFnd = ::FindFirstFile(_T("D:\\\\Program Files\\\\*.*"), &fndData);
if (hFnd == INVALID_HANDLE_VALUE)

    return ;


while (::FindNextFile(&fndData))

    CString strFileName = fndData.cFileName;
    if (fndData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    
		// 目录
    
    else
    
		// 文件
    


if (::GetLastError() == 18)

    // 目录下的文件检索完毕.


::FindClose(hFnd);


我们可以通过一个递归函数来递归遍历:

void BuildRegSystem(
    const tstring& strFileSystemPath,
    const tstring& strAddParPath,
    CSysMgr& mgr
    )

    tstring strFsPath = strFileSystemPath;
    tstring strEnumPath = strFileSystemPath;
    tstring strAddNewPath = strAddParPath;

    if (*strFsPath.rbegin() != _T('\\\\'))
    
        strFsPath += _T('\\\\');
    

    if (*strAddNewPath.rbegin() != _T('\\\\'))
    
        strAddNewPath += _T('\\\\');
    

    strEnumPath = strFsPath + _T("*.*");

    WIN32_FIND_DATA fndFile;
    HANDLE hFnd = ::FindFirstFile(strEnumPath.c_str(), &fndFile);
    if (hFnd == INVALID_HANDLE_VALUE)
    
        return ;
    

    while (::FindNextFile(hFnd, &fndFile))
    
        tstring strFileName = fndFile.cFileName;
        if (strFileName == _T(".."))
        
			// 如果是上级目录,则不管.
            continue;
        

        if (fndFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        
            // 如果是文件夹,则进行递归.
            mgr.CreateRegDirectory(strAddNewPath + strFileName);
            BuildRegSystem(
                strFsPath + strFileName,
                strAddNewPath + strFileName,
                regSystem
                );
        
        else
        
            mgr.InsertEntry(strAddParPath, strFileName);
        
    

    ::FindClose(hFnd);



void Test()

    CSysMgr mgr;

    BuildRegSystem(_T("D:\\\\Program Files\\\\11game"), _T("\\\\"), mgr);
    
    // ...
    // ...

没有任何复杂的操作,只为备忘。






以上是关于Windows下遍历文件目录的主要内容,如果未能解决你的问题,请参考以下文章

在Linux下,怎么切换目录?

Linux shell获得当前目录、上级目录、目录的最后部分

PHP如何修改上级目录中的文件?

python 怎么引入上上级目录的文件

文件夹(目录)操作

Linux和Windows的遍历目录下所有文件的方法对比