C++遍历文件夹下的所有文件

数据分多个文件存储,读取数据就需要对多个文件进行操作。首先就需要定位到文件的名字,之后再对文件进行相应的读写操作。多次涉及多文件的读写操作,现将这个实现总结一下,方便自己和他人使用。具体代码如下:

#include "stdafx.h"
#include <stdio.h>
#include<iostream>
#include<vector>
#include <Windows.h>
#include <fstream>
#include <iterator>
#include <string>
using namespace std;
#define MAX_PATH 1024 //最长路径长度
/*----------------------------
 * 功能 : 递归遍历文件夹,找到其中包含的所有文件
 *----------------------------
 * 函数 : find
 * 访问 : public
 *
 * 参数 : lpPath [in]   需遍历的文件夹目录
 * 参数 : fileList [in]  以文件名称的形式存储遍历后的文件
 */
void find(char* lpPath,std::vector<const std::string> &fileList)
{
  char szFind[MAX_PATH];
  WIN32_FIND_DATA FindFileData;
  strcpy(szFind,lpPath);
  strcat(szFind,"\\*.*");
  HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
  if(INVALID_HANDLE_VALUE == hFind)  return;
  while(true)
  {
    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
      if(FindFileData.cFileName[0]!='.')
      {
        char szFile[MAX_PATH];
        strcpy(szFile,lpPath);
        strcat(szFile,"\\");
        strcat(szFile,(char* )(FindFileData.cFileName));
        find(szFile,fileList);
      }
    }
    else
    {
      //std::cout << FindFileData.cFileName << std::endl;
      fileList.push_back(FindFileData.cFileName);
    }
    if(!FindNextFile(hFind,&FindFileData))  break;
  }
  FindClose(hFind);
}
int main()
{
  std::vector<const std::string> fileList;//定义一个存放结果文件名称的链表
  //遍历一次结果的所有文件,获取文件名列表
  find("XXXX具体文件夹目录",fileList);//之后可对文件列表中的文件进行相应的操作
  //输出文件夹下所有文件的名称
  for(int i = 0; i < fileList.size(); i++)
  {
    cout << fileList[i] << endl;
  }
  cout << "文件数目:" << fileList.size() << endl;
  return 0;
} 

总结

以上所述是小编给大家介绍的C++遍历文件夹下所有文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • C++遍历文件夹获取文件列表

    本文实例类似遍历一个文件夹然后获得该文件夹下的文件列表,可以随意切换文件目录,本来是用在我们小组写的简易ftp服务器上的一个给客户端显示的一个小插件,总之单拿出来应该没啥含量,调用了windows的一些API. 实例代码: #include<iostream> #include<stdlib.h> #include<windows.h> #include<fstream> #include<stdio.h> #include<vector&

  • C++遍历文件夹下文件的方法

    本文实例讲述了C++遍历文件夹下文件的方法.分享给大家供大家参考.具体如下: #include <windows.h> #include <stdio.h> #include <string.h> #define LEN 1024 // 深度优先递归遍历目录中所有的文件 BOOL DirectoryList(LPCSTR Path) { WIN32_FIND_DATA FindData; HANDLE hError; int FileCount = 0; char Fi

  • Python与C++ 遍历文件夹下的所有图片实现代码

     Pyhton与C++ 遍历文件夹下的所有图片实现代码 前言 虽然本文说的是遍历图片,但是遍历其他文件也是可以的. 在进行图像处理的时候,大部分时候只需要处理单张图片.但是一旦把图像处理和机器学习相结合,或者做一些稍大一些的任务的时候,常常需要处理好多图片.而这里面,一个最基本的问题就是如何遍历这些图片. 用OpenCV做过人脸识别的人应该知道,那个项目中并没有进行图片的遍历,而是用了一种辅助方案,生成了一个包含所有图片路径的文件at.txt,然后通过这个路径来读取所有图片.而且这个辅助文件不仅

  • asp.net遍历文件夹下所有子文件夹并绑定到gridview上的方法

    遍历文件夹下所有子文件夹,并且遍历配置文件某一节点中所有key,value并且绑定到GridView上 Helper app_Helper = new Helper(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { gvwBind(); } #region 绑定GridView /// <summary> //

  • node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小

    node.js版     遍历文件夹下最大的文件,并输出路径,大小 实现代码: /* 遍历文件夹下最大的文件,并输出路径,大小 */ function findmax(basepath){ //只能执行一次 if(findmax.s) return; findmax.s = true; var fs = require('fs'); var maxfile = 0; var count = 0; var begin = new Date().getTime(); function Travers

  • JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = 0, folderNum = 0; File file = new File(path); if (file.exists()) { LinkedList<File> list = new LinkedList<File>(); File[] files = file.listFile

  • Android递归方式删除某文件夹下的所有文件(.mp3文件等等)

    1.由于需要删除文件,因此需要如下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 2.核心代码 复制代码 代码如下: package com.example.deleteyoumi; import java.io.File; import android.os.Bundle; import android.os.Han

  • python实现指定文件夹下的指定文件移动到指定位置

    本文主要是写了一个将指定文件夹下的指定文件类型移动到指定位置,具体内容如下 # coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding('utf8') # print os.getcwd() # 有些文件夹下面有很多文件夹,每个文件夹下面有很多视频文件,现在通过脚本,将文件夹下面的所有文件转移到一个目录下面 # 统计访问的文件夹数量及文件数量 countNum = [0, ] count

  • Python读取文件夹下的所有文件实例代码

    Python读取文件夹下的所有文件 os.listdir(path)是得到在path路径下所以文件的名称列表. open(path)是打开某个文件. iter是python的迭代器. 所以读取某文件夹下的所有文件如下: import os path = "D:/Python34/news" #文件夹目录 files= os.listdir(path) #得到文件夹下的所有文件名称 s = [] for file in files: #遍历文件夹 if not os.path.isdir

  • 合并一个文件夹下多个文件内容的单行shell命令

    合并一个文件夹下多个文件内容: 复制代码 代码如下: find -name "*.log" -exec 'cat' {} \; > test.tmp

  • python实现批量获取指定文件夹下的所有文件的厂商信息

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import pefile import codecs, sys import wx import struct #输出中打印Unicode字符 #sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout) def addToDict(theDict,PEfile_Pa

  • java读取某个文件夹下的所有文件实例代码

    java读取某个文件夹下的所有文件          学习java基础知识,读取文件,读取某个文件夹,需要读取所有文件,如何实现呢,看下实例代码. 实例代码: import java.io.FileNotFoundException; import java.io.IOException; import java.io.File; public class ReadFile { public ReadFile() { } /** * 读取某个文件夹下的所有文件 */ public static

  • Python实现合并同一个文件夹下所有txt文件的方法示例

    本文实例讲述了Python实现合并同一个文件夹下所有txt文件的方法.分享给大家供大家参考,具体如下: 一.需求分析 合并一个文件夹下所有txt文件 二.合并效果 三.python实现代码 # -*- coding:utf-8*- import sys reload(sys) sys.setdefaultencoding('utf-8') import os import os.path import time time1=time.time() ########################

随机推荐