hur.cn - 华软网

 热门搜索

我读取了文件夹,可能文件夹了还有子文件夹,怎样实现让程序读取子文件夹的文件

  作者:未知    来源:网络    更新时间:2011/9/27
我读取了文件夹,有文件也有子文件夹,怎样实现让程序读取子文件夹的文件,自动寻找文件夹读取里面的文件
---华软 网友回答---
帮顶下
---华软网友回复---
用死循环,首先寻找一层文件夹A,之后循环判断文件夹里面的对象是否还是文件夹,如果还存在,则将改文件夹赋给A,若没有,则跳出死循环
---华软网友回复---
递归查找
---华软网友回复---
头文件里添加函数声明。。
C++">
void ScanDiskFile(const CString& strPath);
std::vector<CString> m_vStrAllFiles;


具体实现,获取文件夹内的所有文件。。
C++">
void CTestDlg::ScanDiskFile(const CString& strPath)
{
    CFileFind find;
    CString strTemp = strPath;
    CString strDirectory = strPath + _T("\\") + _T("\\*.*");
    CString strFile;

    BOOL IsFind = find.FindFile(strDirectory);
    while(IsFind )
    {
        IsFind=find.FindNextFile();

        // 如果是"." 则不扫描
        if(find.IsDots())
            continue;
        // 如果是是目录,继续扫描此目录
        else if(find.IsDirectory())
        {
            strFile = find.GetFileName();
            strTemp = strTemp + _T("\\") + strFile;
            ScanDiskFile(strTemp);
        }
        // 文件
        else
        {            
            strFile = find.GetFileName();

            // 此处也可以根据相应的扩展名来设置
            
            // ......

            m_vStrAllFiles.push_back(strFile);
        }
    }

    find.Close();
}

---华软网友回复---
用FindFirstFile,FindNextFile函数,返回的结构中WIN32_FIND_DATA中的dwFileAttributes包含FILE_ATTRIBUTE_DIRECTORY位就是子目录,你将子目录名接到源路径后再调用FindFirstFile,FindNextFile函数就可搜索子目录下,依次类推就ok
---华软网友回复---
BOOL DeleteTargetFolder(LPCTSTR lpstrPath)
{
CString strRootPath(lpstrPath);
if (strRootPath[strRootPath.GetLength()-1] != '\\')
strRootPath = strRootPath + _T("\\");

CFileFind mFinder;
BOOL bFind = mFinder.FindFile(strRootPath + _T("*.*"), 0); //如果指定文件类型的话,只能在本目录中遍历
while (bFind){
bFind = mFinder.FindNextFile();
if (mFinder.IsDots()){//.当前目录  ..父目录
continue;
}else{
if (mFinder.IsDirectory()){
//目标是目录
DeleteTargetFolder(mFinder.GetFilePath());
}else{
//目标是文件
DeleteFile(mFinder.GetFilePath());
}
}
}
mFinder.Close();
RemoveDirectory(strRootPath); //一定要放在 mFinder.Close(); 的下面,否则删除失败,提示文件夹正被使用中

return TRUE;
}
这是一个遍历一个文件夹所有文件和子文件夹然后删除的函数
将删除的操作改为你想要的文件操作就可以
---华软网友回复---
正确做法用递归实现      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。