手机
当前位置:查字典教程网 >编程开发 >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++实现单向循环链表的解决方法

C++十六进制宏的用法详解

c语言全盘搜索指定文件的实例代码

如何用C++实现双向循环链表

VC++开发中完美解决头文件相互包含问题的方法解析

在vs2010中,输出当前文件路径与源文件当前行号的解决方法

C/C++指针和取地址的方法

c语言读取obj文件转换数据的小例子

VC实现图片拖拽及动画的实例

利用C++实现从std::string类型到bool型的转换

精品推荐
分类导航