windows中遍历指定文件夹下的所有子文件夹

该程序使用C++在Windows环境下遍历指定文件夹的所有子文件夹。通过调用FindFirstFileA和FindNextFileA函数,过滤掉'.'和'..',并将子文件夹路径存入vector中。
摘要由CSDN通过智能技术生成

前面我给出了windows下面指定文件夹下面指定类型文件的遍历程序,这里,再给出遍历指定文件夹下的所有子文件夹的程序:

#include "stdafx.h"
#include <Windows.h>
#include <vector>
#include <string>
#include "iostream"
using namespace std;

 

int GetSubFolders(string& folder, vector<string>& subFolders )
{
   subFolders.clear();
   WIN32_FIND_DATAA fileFindData;
   string nameWC = folder + "//*";
   HANDLE hFind = ::FindFirstFileA(nameWC.c_str(), &fileFindData);
   if (hFind == INVALID_HANDLE_VALUE)
   {
      cout<<"folder path error...."<<endl;
      system("pause");
      return 0;
   }
  
  do
  {
    if (fileFindData.cFileName[0] == '.')
  {
     continue; // filter the '..' and '.' in the path
   }
   

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是遍历指定路径下所有文件夹以及所有文件的 c 代码: ```c #include <windows.h> #include <stdio.h> #include <stdbool.h> void TraverseDirectory(char* path, char* destPath) { char searchPath[MAX_PATH]; WIN32_FIND_DATA findData; HANDLE hFind; // 遍历指定路径下的文件夹 sprintf(searchPath, "%s\\*", path); hFind = FindFirstFile(searchPath, &findData); if (hFind != INVALID_HANDLE_VALUE) { do { if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // 如果是文件夹且不是"."或".."目录,则递归遍历文件夹的文件 if (strcmp(findData.cFileName, ".") != 0 && strcmp(findData.cFileName, "..") != 0) { char subPath[MAX_PATH]; sprintf(subPath, "%s\\%s", path, findData.cFileName); TraverseDirectory(subPath, destPath); } } else { // 如果是文件,则复制到指定路径 char srcPath[MAX_PATH]; char destFilePath[MAX_PATH]; sprintf(srcPath, "%s\\%s", path, findData.cFileName); sprintf(destFilePath, "%s\\%s", destPath, findData.cFileName); CopyFile(srcPath, destFilePath, false); } } while (FindNextFile(hFind, &findData)); FindClose(hFind); } } ``` 在上面的代码,我们通过 `FindFirstFile` 和 `FindNextFile` 函数遍历指定路径下的文件夹和文件。如果遍历到的是文件夹,则递归遍历文件夹的文件;如果遍历到的是文件,则复制到指定路径。 下面是调用上述函数的代码: ```c int main() { char path[MAX_PATH] = "C:\\test"; char destPath[MAX_PATH] = "D:\\backup"; TraverseDirectory(path, destPath); return 0; } ``` 在上面的代码,我们将需要遍历的路径和要备份到的路径传递给 `TraverseDirectory` 函数,该函数会遍历指定路径下的所有文件夹和文件,并将其复制到指定的备份路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值