C/C++编写程序以获取文件夹内所有子文件名
来源:互联网 发布:淘宝袜子利润 编辑:程序博客网 时间:2024/06/01 11:06
参考:
http://www.cnblogs.com/xudong-bupt/p/3504442.html
#
利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多博文:
头文件如下:
[cpp] view plain copy
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <string.h> #ifdef linux #include <unistd.h> #include <dirent.h> #endif #ifdef WIN32 #include <direct.h> #include <io.h> #endif using namespace std;
程序如下:
[cpp] view plain copy
<pre name="code" class="cpp">/** * @function: 获取cate_dir目录下的所有文件名 * @param: cate_dir - string类型 * @result:vector<string>类型 */ vector<string> getFiles(string cate_dir) { vector<string> files;//存放文件名 #ifdef WIN32 _finddata_t file; long lf; //输入文件夹路径 if ((lf=_findfirst(cate_dir.c_str(), &file)) == -1) { cout<<cate_dir<<" not found!!!"<<endl; } else { while(_findnext(lf, &file) == 0) { //输出文件名 //cout<<file.name<<endl; if (strcmp(file.name, ".") == 0 || strcmp(file.name, "..") == 0) continue; files.push_back(file.name); } } _findclose(lf); #endif #ifdef linux DIR *dir; struct dirent *ptr; char base[1000]; if ((dir=opendir(cate_dir.c_str())) == NULL) { perror("Open dir error..."); exit(1); } while ((ptr=readdir(dir)) != NULL) { if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dir continue; else if(ptr->d_type == 8) ///file //printf("d_name:%s/%s\n",basePath,ptr->d_name); files.push_back(ptr->d_name); else if(ptr->d_type == 10) ///link file //printf("d_name:%s/%s\n",basePath,ptr->d_name); continue; else if(ptr->d_type == 4) ///dir { files.push_back(ptr->d_name); /* memset(base,'\0',sizeof(base)); strcpy(base,basePath); strcat(base,"/"); strcat(base,ptr->d_nSame); readFileList(base); */ } } closedir(dir); #endif //排序,按从小到大排序 sort(files.begin(), files.end()); return files; }
windows环境下需要加上cate_dir+”\*”
实现:获取当前目录下的文件名:
windows环境:
[cpp] view plain copy
int main(void) { char current_address[100]; memset(current_address, 0, 100); getcwd(current_address, 100); //获取当前路径 cout<<current_address<<endl; strcat(current_address, "\\*"); vector<string> files=getFiles((string)current_address); for (int i=0; i<files.size(); i++) { cout<<files[i]<<endl; } //cout<<"Hello World"<<endl; cout<<"end..."<<endl; cin.get(); return 0; }
linux环境:
[cpp] view plain copy
int main(void) { DIR *dir; char basePath[100]; ///get the current absoulte path memset(basePath, '\0', sizeof(basePath)); getcwd(basePath, 999); printf("the current dir is : %s\n",basePath); cout<<endl<<endl; vector<string> files=getFiles(basePath); for (int i=0; i<files.size(); i++) { cout<<files[i]<<endl; } cout<<"end..."<<endl<<endl; return 0; }
#
参考:
http://blog.csdn.net/cscmaker/article/details/7042718
http://baike.baidu.com/item/getcwd
获取当前绝对路径getcwd():
windows环境下头文件:
[cpp] view plain copy
#include <direct.h>
linux环境下头文件:
[cpp] view plain copy
#include <unistd.h>
阅读全文
0 0
- C/C++编写程序以获取文件夹内所有子文件名
- 利用C/C++编写程序以获取文件夹内所有子文件名,windows和Linux两个版本都有
- C语言获取文件夹内所有文件名并打印到txt中
- Linux下C获取文件夹下所有文件名
- Windows下C获取文件夹下所有文件名
- C++获取文件夹大小、文件夹内所有文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- 标准c/c++获得某文件夹下所有文件名(包括子文件夹中的)
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转载)
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- 【C++】获取当前文件夹内的所有文件
- 【C++】读取文件夹下所有文件名
- fso获取文件夹内所有文件名列表的代码
- 获取文件夹内所有文件包括子文件夹
- C/C++ 获取文件夹下所有文件名 windows和linux通用
- javascript-入门
- cocos2d-js 播放音频文件
- Ubuntu 10.04下如何保存和查看信使(iptux)的聊天历史
- 设计模式23缩略版
- Redis 学习(三)redis服务器集群、客户端分片
- C/C++编写程序以获取文件夹内所有子文件名
- 如何建立社交圈
- 测试
- Kotlin中泛型的序列化Parcelable
- 安卓常用默认开关
- mysql操作(未完待续)
- iOS卡顿监测分析
- Mysql$追加1基础大全
- 面试怎么谈薪资——让自己利益最大化