这篇文章主要介绍了 C++ 遍历文件夹下所有文件的多种方法,需要的朋友可以参考下

文章目录

  • C++ 遍历文件夹下所有文件的多种方法
  • 一、实现方法一
  • 二、实现方法二
  • 三、实现方法三
  • 四、实现方法四

C++ 遍历文件夹下所有文件的多种方法

一、实现方法一

为数不多的好用的代码,遍历文件夹获取所有子文件名,“filespec” 可用通配符 “*?”。注意如果用相对路径的话,获取所有文件名后应再调用 SetInitDir 将初始目录改为当前目录,否则中间生成的文件都会放在之前的 “InitDir” 内。
C/C++ 遍历文件夹感觉真是很不好用,建议还是使用 C/C++ 做单任务处理,然后通过脚本语言实现遍历比较合理。

CBrowseDir.h

#include <io.h>
#include <stdlib.h>
#include <direct.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std; class CBrowseDir
{
protected: //存放初始目录的绝对路径,以'\'结尾 char m_szInitDir[_MAX_PATH]; public: //缺省构造器 CBrowseDir(); //设置初始目录为dir,如果返回false,表示目录不可用 bool SetInitDir(const char *dir); //开始遍历初始目录及其子目录下由filespec指定类型的文件 //filespec可以使用通配符 * ?,不能包含路径。 //如果返回false,表示遍历过程被用户中止 bool BeginBrowse(const char *filespec); vector<string> BeginBrowseFilenames(const char *filespec); protected: //遍历目录dir下由filespec指定的文件 //对于子目录,采用迭代的方法 //如果返回false,表示中止遍历文件 bool BrowseDir(const char *dir,const char *filespec); vector<string> GetDirFilenames(const char *dir,const char *filespec); //函数BrowseDir每找到一个文件,就调用ProcessFile //并把文件名作为参数传递过去 //如果返回false,表示中止遍历文件 //用户可以覆写该函数,加入自己的处理代码 virtual bool ProcessFile(const char *filename); //函数BrowseDir每进入一个目录,就调用ProcessDir //并把正在处理的目录名及上一级目录名作为参数传递过去 //如果正在处理的是初始目录,则parentdir=NULL //用户可以覆写该函数,加入自己的处理代码 //比如用户可以在这里统计子目录的个数 virtual void ProcessDir(const char *currentdir,const char *parentdir);
};

CBrowseDir.cpp

#include "CBrowseDir.h" CBrowseDir::CBrowseDir()
{ //用当前目录初始化m_szInitDir getcwd(m_szInitDir,_MAX_PATH); //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\");
} bool CBrowseDir::SetInitDir(const char *dir)
{ //先把dir转换为绝对路径 if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL) return false; //判断目录是否存在 if (_chdir(m_szInitDir) != 0) return false; //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\"); return true;
} vector<string> CBrowseDir::BeginBrowseFilenames(const char *filespec)
{ ProcessDir(m_szInitDir,NULL); return GetDirFilenames(m_szInitDir,filespec);
} bool CBrowseDir::BeginBrowse(const char *filespec)
{ ProcessDir(m_szInitDir,NULL); return BrowseDir(m_szInitDir,filespec);
} bool CBrowseDir::BrowseDir(const char *dir,const char *filespec)
{ _chdir(dir); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile=_findfirst(filespec,&fileinfo)) != -1) { do { //检查是不是目录 //如果不是,则进行处理 if (!(fileinfo.attrib & _A_SUBDIR)) { char filename[_MAX_PATH]; strcpy(filename,dir); strcat(filename,fileinfo.name); cout << filename << endl; if (!ProcessFile(filename)) return false; } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } //查找dir中的子目录 //因为在处理dir中的文件时,派生类的ProcessFile有可能改变了 //当前目录,因此还要重新设置当前目录为dir。 //执行过_findfirst后,可能系统记录下了相关信息,因此改变目录 //对_findnext没有影响。 _chdir(dir); if ((hFile=_findfirst("*.*",&fileinfo)) != -1) { do { //检查是不是目录 //如果是,再检查是不是 . 或 ..  //如果不是,进行迭代 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name,".") != 0 && strcmp (fileinfo.name,"..") != 0) { char subdir[_MAX_PATH]; strcpy(subdir,dir); strcat(subdir,fileinfo.name); strcat(subdir,"\\"); ProcessDir(subdir,dir); if (!BrowseDir(subdir,filespec)) return false; } } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } return true;
} vector<string> CBrowseDir::GetDirFilenames(const char *dir,const char *filespec)
{ _chdir(dir); vector<string>filename_vector; filename_vector.clear(); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile=_findfirst(filespec,&fileinfo)) != -1) { do { //检查是不是目录 //如果不是,则进行处理 if (!(fileinfo.attrib & _A_SUBDIR)) { char filename[_MAX_PATH]; strcpy(filename,dir); strcat(filename,fileinfo.name); filename_vector.push_back(filename); } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } //查找dir中的子目录 //因为在处理dir中的文件时,派生类的ProcessFile有可能改变了 //当前目录,因此还要重新设置当前目录为dir。 //执行过_findfirst后,可能系统记录下了相关信息,因此改变目录 //对_findnext没有影响。 _chdir(dir); if ((hFile=_findfirst("*.*",&fileinfo)) != -1) { do { //检查是不是目录 //如果是,再检查是不是 . 或 ..  //如果不是,进行迭代 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name,".") != 0 && strcmp (fileinfo.name,"..") != 0) { char subdir[_MAX_PATH]; strcpy(subdir,dir); strcat(subdir,fileinfo.name); strcat(subdir,"\\"); ProcessDir(subdir,dir); vector<string>tmp= GetDirFilenames(subdir,filespec); for (vector<string>::iterator it=tmp.begin();it<tmp.end();it++) { filename_vector.push_back(*it); } } } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } return filename_vector;
} bool CBrowseDir::ProcessFile(const char *filename)
{ return true;
} void CBrowseDir::ProcessDir(const char  *currentdir,const char *parentdir)
{
}

二、实现方法二

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

#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;
}

测试了一下,目标文件夹下的文件名称存在了 fileList 容器中,根据读取的文件名称,可对文件进行相应的操作,输出结果如下所示:

三、实现方法三

function:遍历目录下所有文件,返回文件总数,子文件夹总数(修改一下可以获得全部文件名等)。

#include "stdlib.h"
#include "direct.h"
#include "string.h"
#include "io.h"
#include "stdio.h"
#include "iostream"
using namespace std; class CBrowseDir
{
protected: //存放初始目录的绝对路径,以'\'结尾 char m_szInitDir[_MAX_PATH]; public: //缺省构造器 CBrowseDir(); //设置初始目录为dir,如果返回false,表示目录不可用 bool SetInitDir(const char *dir); //开始遍历初始目录及其子目录下由filespec指定类型的文件 //filespec可以使用通配符 * ?,不能包含路径。 //如果返回false,表示遍历过程被用户中止 bool BeginBrowse(const char *filespec); protected: //遍历目录dir下由filespec指定的文件 //对于子目录,采用迭代的方法 //如果返回false,表示中止遍历文件 bool BrowseDir(const char *dir,const char *filespec); //函数BrowseDir每找到一个文件,就调用ProcessFile //并把文件名作为参数传递过去 //如果返回false,表示中止遍历文件 //用户可以覆写该函数,加入自己的处理代码 virtual bool ProcessFile(const char *filename); //函数BrowseDir每进入一个目录,就调用ProcessDir //并把正在处理的目录名及上一级目录名作为参数传递过去 //如果正在处理的是初始目录,则parentdir=NULL //用户可以覆写该函数,加入自己的处理代码 //比如用户可以在这里统计子目录的个数 virtual void ProcessDir(const char *currentdir,const char *parentdir);
}; CBrowseDir::CBrowseDir()
{ //用当前目录初始化m_szInitDir getcwd(m_szInitDir,_MAX_PATH); //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\");
} bool CBrowseDir::SetInitDir(const char *dir)
{ //先把dir转换为绝对路径 if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL) return false; //判断目录是否存在 if (_chdir(m_szInitDir) != 0) return false; //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\"); return true;
} bool CBrowseDir::BeginBrowse(const char *filespec)
{ ProcessDir(m_szInitDir,NULL); return BrowseDir(m_szInitDir,filespec);
} bool CBrowseDir::BrowseDir(const char *dir,const char *filespec)
{ _chdir(dir); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile=_findfirst(filespec,&fileinfo)) != -1) { do { //检查是不是目录 //如果不是,则进行处理 if (!(fileinfo.attrib & _A_SUBDIR)) { char filename[_MAX_PATH]; strcpy(filename,dir); strcat(filename,fileinfo.name); cout << filename << endl; if (!ProcessFile(filename)) return false; } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } //查找dir中的子目录 //因为在处理dir中的文件时,派生类的ProcessFile有可能改变了 //当前目录,因此还要重新设置当前目录为dir。 //执行过_findfirst后,可能系统记录下了相关信息,因此改变目录 //对_findnext没有影响。 _chdir(dir); if ((hFile=_findfirst("*.*",&fileinfo)) != -1) { do { //检查是不是目录 //如果是,再检查是不是 . 或 ..  //如果不是,进行迭代 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name,".") != 0 && strcmp (fileinfo.name,"..") != 0) { char subdir[_MAX_PATH]; strcpy(subdir,dir); strcat(subdir,fileinfo.name); strcat(subdir,"\\"); ProcessDir(subdir,dir); if (!BrowseDir(subdir,filespec)) return false; } } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } return true;
} bool CBrowseDir::ProcessFile(const char *filename)
{ return true;
} void CBrowseDir::ProcessDir(const char  *currentdir,const char *parentdir)
{
} //从CBrowseDir派生出的子类,用来统计目录中的文件及子目录个数
class CStatDir:public CBrowseDir
{
protected: int m_nFileCount;  //保存文件个数 int m_nSubdirCount; //保存子目录个数 public: //缺省构造器 CStatDir() { //初始化数据成员m_nFileCount和m_nSubdirCount m_nFileCount=m_nSubdirCount=0; } //返回文件个数 int GetFileCount() { return m_nFileCount; } //返回子目录个数 int GetSubdirCount() { //因为进入初始目录时,也会调用函数ProcessDir, //所以减1后才是真正的子目录个数。 return m_nSubdirCount-1; } protected: //覆写虚函数ProcessFile,每调用一次,文件个数加1 virtual bool ProcessFile(const char *filename) { m_nFileCount++; return CBrowseDir::ProcessFile(filename); } //覆写虚函数ProcessDir,每调用一次,子目录个数加1 virtual void ProcessDir (const char *currentdir,const char *parentdir) { m_nSubdirCount++; CBrowseDir::ProcessDir(currentdir,parentdir); }
}; void main()
{ //获取目录名 char buf[256]; printf("请输入要统计的目录名:"); gets(buf); //构造类对象 CStatDir statdir; //设置要遍历的目录 if (!statdir.SetInitDir(buf)) { puts("目录不存在。"); return; } //开始遍历 statdir.BeginBrowse("*.*"); printf("文件总数: %d\n子目录总数:%d\n",statdir.GetFileCount(),statdir.GetSubdirCount());
}

已在 windows 上验证有效。

下面我加了 BeginBrowseFilenames 函数,以 vector<char*> 形式返回目录中所有文件名。

#include "stdlib.h"
#include "direct.h"
#include "string.h"
#include "string"
#include "io.h"
#include "stdio.h"
#include <vector>
#include "iostream"
using namespace std; class CBrowseDir
{
protected: //存放初始目录的绝对路径,以'\'结尾 char m_szInitDir[_MAX_PATH]; public: //缺省构造器 CBrowseDir(); //设置初始目录为dir,如果返回false,表示目录不可用 bool SetInitDir(const char *dir); //开始遍历初始目录及其子目录下由filespec指定类型的文件 //filespec可以使用通配符 * ?,不能包含路径。 //如果返回false,表示遍历过程被用户中止 bool BeginBrowse(const char *filespec); vector<string> BeginBrowseFilenames(const char *filespec); protected: //遍历目录dir下由filespec指定的文件 //对于子目录,采用迭代的方法 //如果返回false,表示中止遍历文件 bool BrowseDir(const char *dir,const char *filespec); vector<string> GetDirFilenames(const char *dir,const char *filespec); //函数BrowseDir每找到一个文件,就调用ProcessFile //并把文件名作为参数传递过去 //如果返回false,表示中止遍历文件 //用户可以覆写该函数,加入自己的处理代码 virtual bool ProcessFile(const char *filename); //函数BrowseDir每进入一个目录,就调用ProcessDir //并把正在处理的目录名及上一级目录名作为参数传递过去 //如果正在处理的是初始目录,则parentdir=NULL //用户可以覆写该函数,加入自己的处理代码 //比如用户可以在这里统计子目录的个数 virtual void ProcessDir(const char *currentdir,const char *parentdir);
}; CBrowseDir::CBrowseDir()
{ //用当前目录初始化m_szInitDir getcwd(m_szInitDir,_MAX_PATH); //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\");
} bool CBrowseDir::SetInitDir(const char *dir)
{ //先把dir转换为绝对路径 if (_fullpath(m_szInitDir,dir,_MAX_PATH) == NULL) return false; //判断目录是否存在 if (_chdir(m_szInitDir) != 0) return false; //如果目录的最后一个字母不是'\',则在最后加上一个'\' int len=strlen(m_szInitDir); if (m_szInitDir[len-1] != '\\') strcat(m_szInitDir,"\\"); return true;
} vector<string> CBrowseDir::BeginBrowseFilenames(const char *filespec)
{ ProcessDir(m_szInitDir,NULL); return GetDirFilenames(m_szInitDir,filespec);
} bool CBrowseDir::BeginBrowse(const char *filespec)
{ ProcessDir(m_szInitDir,NULL); return BrowseDir(m_szInitDir,filespec);
} bool CBrowseDir::BrowseDir(const char *dir,const char *filespec)
{ _chdir(dir); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile=_findfirst(filespec,&fileinfo)) != -1) { do { //检查是不是目录 //如果不是,则进行处理 if (!(fileinfo.attrib & _A_SUBDIR)) { char filename[_MAX_PATH]; strcpy(filename,dir); strcat(filename,fileinfo.name); cout << filename << endl; if (!ProcessFile(filename)) return false; } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } //查找dir中的子目录 //因为在处理dir中的文件时,派生类的ProcessFile有可能改变了 //当前目录,因此还要重新设置当前目录为dir。 //执行过_findfirst后,可能系统记录下了相关信息,因此改变目录 //对_findnext没有影响。 _chdir(dir); if ((hFile=_findfirst("*.*",&fileinfo)) != -1) { do { //检查是不是目录 //如果是,再检查是不是 . 或 ..  //如果不是,进行迭代 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name,".") != 0 && strcmp (fileinfo.name,"..") != 0) { char subdir[_MAX_PATH]; strcpy(subdir,dir); strcat(subdir,fileinfo.name); strcat(subdir,"\\"); ProcessDir(subdir,dir); if (!BrowseDir(subdir,filespec)) return false; } } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } return true;
} vector<string> CBrowseDir::GetDirFilenames(const char *dir,const char *filespec)
{ _chdir(dir); vector<string>filename_vector; filename_vector.clear(); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile=_findfirst(filespec,&fileinfo)) != -1) { do { //检查是不是目录 //如果不是,则进行处理 if (!(fileinfo.attrib & _A_SUBDIR)) { char filename[_MAX_PATH]; strcpy(filename,dir); strcat(filename,fileinfo.name); filename_vector.push_back(filename); } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } //查找dir中的子目录 //因为在处理dir中的文件时,派生类的ProcessFile有可能改变了 //当前目录,因此还要重新设置当前目录为dir。 //执行过_findfirst后,可能系统记录下了相关信息,因此改变目录 //对_findnext没有影响。 _chdir(dir); if ((hFile=_findfirst("*.*",&fileinfo)) != -1) { do { //检查是不是目录 //如果是,再检查是不是 . 或 ..  //如果不是,进行迭代 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name,".") != 0 && strcmp (fileinfo.name,"..") != 0) { char subdir[_MAX_PATH]; strcpy(subdir,dir); strcat(subdir,fileinfo.name); strcat(subdir,"\\"); ProcessDir(subdir,dir); vector<string>tmp= GetDirFilenames(subdir,filespec); for (vector<string>::iterator it=tmp.begin();it<tmp.end();it++) { filename_vector.push_back(*it); } } } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); } return filename_vector;
} bool CBrowseDir::ProcessFile(const char *filename)
{ return true;
} void CBrowseDir::ProcessDir(const char  *currentdir,const char *parentdir)
{
} //从CBrowseDir派生出的子类,用来统计目录中的文件及子目录个数
class CStatDir:public CBrowseDir
{
protected: int m_nFileCount;  //保存文件个数 int m_nSubdirCount; //保存子目录个数 public: //缺省构造器 CStatDir() { //初始化数据成员m_nFileCount和m_nSubdirCount m_nFileCount=m_nSubdirCount=0; } //返回文件个数 int GetFileCount() { return m_nFileCount; } //返回子目录个数 int GetSubdirCount() { //因为进入初始目录时,也会调用函数ProcessDir, //所以减1后才是真正的子目录个数。 return m_nSubdirCount-1; } protected: //覆写虚函数ProcessFile,每调用一次,文件个数加1 virtual bool ProcessFile(const char *filename) { m_nFileCount++; return CBrowseDir::ProcessFile(filename); } //覆写虚函数ProcessDir,每调用一次,子目录个数加1 virtual void ProcessDir (const char *currentdir,const char *parentdir) { m_nSubdirCount++; CBrowseDir::ProcessDir(currentdir,parentdir); }
}; void main()
{ //获取目录名 char buf[256]; printf("请输入要统计的目录名:"); gets(buf); //构造类对象 CStatDir statdir; //设置要遍历的目录 if (!statdir.SetInitDir(buf)) { puts("目录不存在。"); return; } //开始遍历 vector<string>file_vec = statdir.BeginBrowseFilenames("*.*"); for(vector<string>::const_iterator it = file_vec.begin(); it < file_vec.end(); ++it) std::cout<<*it<<std::endl; printf("文件总数: %d\n",file_vec.size()); system("pause");
}

四、实现方法四

下面是输出当前目录下的所有文件夹以及文件的绝对路径(当然也可以是相对路径,由输入的路径决定),下面的函数接口可以改装为单输出文件或者文件夹的接口,这是一个大方面的总接口。

#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
void getAllFiles(string path, vector<string>& files)
{//文件句柄 long  hFile = 0;//文件信息 struct _finddata_t fileinfo; //很少用的文件信息读取结构string p; //string类很有意思的一个赋值函数:assign(),有很多重载版本if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1){do{if ((fileinfo.attrib & _A_SUBDIR)) //判断是否为文件夹{if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0){files.push_back(p.assign(path).append("/").append(fileinfo.name));//保存文件夹名字getAllFiles(p.assign(path).append("/").append(fileinfo.name), files);//递归当前文件夹}}else  //文件处理{files.push_back(p.assign(path).append("/").append(fileinfo.name));//文件名}} while (_findnext(hFile, &fileinfo) == 0); //寻找下一个,成功返回0,否则-1_findclose(hFile);}
}
//测试
void main()
{string DATA_DIR = "D:/CoderMaker/data_sets/lfw";vector<string> files;//测试char * DistAll = "AllFiles.txt";getAllFiles(DATA_DIR, files);//所有文件与文件夹的路径都输出ofstream ofn(DistAll); //输出文件流int size = files.size();int FaiNum = 0;ofn << size << endl;for (int i = 0; i<size; i++){ofn << files[i] << endl;}ofn.close();return 0;
}

测试结果:


C++ 遍历文件夹下所有文件的多种方法相关推荐

  1. OpenCV实现遍历文件夹下所有文件

    OpenCV中有实现遍历文件夹下所有文件的类Directory,它里面包括3个成员函数:(1).GetListFiles:遍历指定文件夹下的所有文件,不包括指定文件夹内的文件夹:(2).GetList ...

  2. python根据文件名或后缀名遍历文件夹下所有文件或图片的路径,并计算文件行数

    python遍历文件夹下所有文件或图片的路径 代码 指定目录下的指定后缀文件 import glob #获取指定目录下的所有图片 print (glob.glob("\\home\\qiao ...

  3. 怎么遍历服务器文件夹,遍历远程服务器某个文件夹下的文件

    遍历远程文件夹下的文件,您可以考虑使用FTP的方式,具体的请参考下述代码: private string GetFileNames(string URI) { WebClient wClient = ...

  4. java中File类应用:遍历文件夹下所有文件

    练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件;import java.io.File;public class Test {public sta ...

  5. php遍历文件夹下文件内容_php遍历文件夹下所有文件的代码示例

    本篇文章给大家带来的内容是关于php遍历文件夹下所有文件的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 不论是面试还是正常工作需要都会用到遍历文件夹下的所有文件,今天就记录 ...

  6. 遍历文件夹下所有文件和文件夹

    1 void find(char * lpPath) { char szFind[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPa ...

  7. php文件夹下所有视频播放,PHP使用glob方法遍历文件夹下所有文件

    遍历文件夹下所有文件,一般可以使用opendir 与 readdir 方法来遍历. 代码: $path = dirname(__FILE__); // __FILE__文件的完整路径和文件名. // ...

  8. bat递归查找指定文件_批处理脚本遍历指定文件夹下的文件

    批处理脚本 1. 遍历指定文件夹下的文件 1.1 命令解释 命令: for [参数] %%变量名 in (匹配符) do (执行的命令) 切记:每个指令之间必须以空格隔开,in 与 ( 之间有空格,d ...

  9. c++遍历文件夹下的文件_算法面试|开发者必备|使用递归函数进行无限分类及文件夹遍历...

    适合的读者:学生:初级程序员 前言 程序设计本质上是为了解决生产中的问题,而有时候我们面临的问题无法用有限的数学公式来解决,比如树形目录.无限分类等等,类似这种问题,用递归函数来解决就方便多了. 那什 ...

  10. 【转载】VC遍历文件夹下所有文件和文件夹

    2019独角兽企业重金招聘Python工程师标准>>> 一.先介绍一个结构WIN32_FIND_DATA VC遍历文件夹下所有文件和文件夹 typedef struct _WIN32 ...

最新文章

  1. centos 下安装mysql,linux(Centos7)下安装mysql8.0.18的教程图解
  2. ECMAScript3中数组方法
  3. Codeforces Gym 100269 Dwarf Tower (最短路)
  4. 【tensorflow】安装cuda10.0 and cudnn 7.5.0 and tensorflow-gpu==1.14.0
  5. 自定义控件winfrom
  6. [CSS] Use CSS Counters to Create Pure CSS Dynamic Lists
  7. python 螺旋数组_LeetCode54,螺旋矩阵,一题学会一个重要技巧
  8. LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)
  9. centos7 安装mysql_Centos7安装最新版本的MySQL
  10. 算法导论 思考题9-2
  11. null value in entry: destinationDir=null
  12. python123平台登陆页_从头搭建一个flask鉴权系统之登陆
  13. java 纯真ip数据库_纯真IP数据库格式读取方法(JAVA/PHP/Python)
  14. 林家栋这三十年:深获万梓良、刘德华赏识,靠配角成为影帝
  15. Chrome谷歌浏览器启用flash插件
  16. vue动态style设置背景图片
  17. python显示等待隐式等待
  18. 显示器刷新率30hz_如何使您的120Hz或144Hz显示器使用其广告刷新率
  19. 基因组测序为什么没完没了?
  20. 针对e场景活动发布网站使用及产品介绍

热门文章

  1. python源码提取_从PyInstaller打包生成的EXE文件中提取Python源码
  2. python数据分析基础pdf中文下载_Python数据分析基础(pdf+epub+mobi+txt+azw3)
  3. 两个队列实现一个栈(C++实现)
  4. frm需要金融计算机吗,FRM考试能用哪些金融计算器?(内含用法功能全解读)
  5. Kubernetes Dashboard 终结者:KubeSphere
  6. Vue官方文档代码大全
  7. 数据结构-二叉树(求二叉树叶子节点数的递归和非递归算法)
  8. A315-56 Compal LA-H801P LA-J801P宏基笔记本点位图
  9. 物联网中无线通信技术
  10. Linux ftp ldap认证,vsftpd+ldap认证