C++读取特定路径下文件目录及文件名称
2014-07-12 13:38
519 查看
这几天在弄一个项目,需要读取给定路径下的所有文件夹名称或所有带后缀的文件名。
查了下C++的资料,发现有很多方法,这里总结其中的一种,其他用法类似。
主要用到了以下几个头文件(类):io.h, fstream, string。
1、读取某给定路径下所有文件夹与文件名称,并带完整路径。代码如下:
该函数有两个参数,第一个为路径字符串(string类型,最好为绝对路径);第二个参数为文件夹与文件名称存储变量(vector类型,引用传递)。在主函数中调用格式(并将结果保存在文件"AllFiles.txt"中,第一行为总数):
结果如下:
同理,只读取某给定路径下的当前文件夹名(以下类似,只给出函数,调用案例同上):
只读取某给定路径下的当前文件名:
只读取某给定路径下的所有文件名(即包含当前目录及子目录的文件):
至此,简单的读取功能就实现了,以后只要指定路径,就能轻松地得到对应的路径与文件名称。
查了下C++的资料,发现有很多方法,这里总结其中的一种,其他用法类似。
主要用到了以下几个头文件(类):io.h, fstream, string。
1、读取某给定路径下所有文件夹与文件名称,并带完整路径。代码如下:
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) ); 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); //寻找下一个,成功返回0,否则-1 _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++读取特定路径下文件目录及文件名称&&文件结构
- C++读取特定路径下文件目录及文件名称
- Windows 用c++实现,文件路径和目录名的读取保存
- 一个关于读取指定路径下文件名称的小工具(C++)
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- C++查找一个目录下所有特定扩展名的文件
- C++读取文件夹中所有的文件或者是特定后缀的文件
- C++查找一个目录下所有特定扩展名的文件
- c++读取文件目录下所有文件并输出
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
- C#取得指定路径下所有目录及文件名称(可递归)
- C++实现读取特定路径下文件夹及文件名的方法
- bash获取特定目录下所有文件的全路径
- 点滴积累【C#】---C#实现上传word将路径保存到数据库,文件保存到服务器。并且按照名称读取服务器的word