手机
当前位置:查字典教程网 >编程开发 >C语言 >C++实现读取特定路径下文件夹及文件名的方法
C++实现读取特定路径下文件夹及文件名的方法
摘要:本文所述实例代码主要实现读取给定路径下的所有文件夹名称或所有带后缀的文件名的功能。具体解决方法如下:主要用到了以下几个头文件(类):io.h...

本文所述实例代码主要实现读取给定路径下的所有文件夹名称或所有带后缀的文件名的功能。具体解决方法如下:

主要用到了以下几个头文件(类):io.h, fstream, string。

首先,读取某给定路径下所有文件夹与文件名称,并带完整路径。实现代码如下:

void getAllFiles( string path, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; 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) ); getFilesall( p.assign(path).append("").append(fileinfo.name), files ); } } else { files.push_back(p.assign(path).append("").append(fileinfo.name) ); } }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }

该函数有两个参数,第一个为路径字符串(string类型,最好为绝对路径);第二个参数为文件夹与文件名称存储变量(vector类型,引用传递)。

在主函数中调用格式(并将结果保存在文件"AllFiles.txt"中,第一行为总数):

char * filePath = "E:YunShi"; vector<string> files; char * distAll = "AllFiles.txt"; getFilesall(filePath, files); ofstream ofn(distAll); int size = files.size(); ofn<<size<<endl; for (int i = 0;i<size;i++) { ofn<<files[i]<<endl; } ofn.close();

同理,只读取某给定路径下的当前文件夹名(以下类似,只给出函数,调用案例同上):

void getJustCurrentDir( string path, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; 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(fileinfo.name); //files.push_back(p.assign(path).append("").append(fileinfo.name) ); } } }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }

只读取某给定路径下的当前文件名:

void getJustCurrentFile( string path, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; if((hFile = _findfirst(p.assign(path).append("*").c_str(),&fileinfo)) != -1) { do { if((fileinfo.attrib & _A_SUBDIR)) { ; } else { files.push_back(fileinfo.name); //files.push_back(p.assign(path).append("").append(fileinfo.name) ); } }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }

只读取某给定路径下的所有文件名(即包含当前目录及子目录的文件):

void getFilesAll( string path, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; 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) ); getFilesA( p.assign(path).append("").append(fileinfo.name), files ); } } else { files.push_back(p.assign(path).append("").append(fileinfo.name) ); } }while(_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } }

【C++实现读取特定路径下文件夹及文件名的方法】相关文章:

C++获取zip文件列表方法

C++实现基数排序的方法详解

C++实现正态随机分布的方法

C++ 冒泡排序数据结构、算法及改进算法

C++ 字符串的反转五种方法实例

C++实现两个日期间差多少天的解决方法

C++读写.mat文件的方法

解决C++中事件不响应的方法详解

C++函数中return语句的使用方法

C中实现矩阵乘法的一种高效的方法

精品推荐
分类导航