C/C++ 获取文件夹下所有文件名 windows和linux通用
2016-02-18 17:08
656 查看
参考:
/article/4813948.html
#################################################
利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多博文:
头文件如下:
程序如下:
windows环境下需要加上cate_dir+"\\*"
实现:获取当前目录下的文件名:
windows环境:
linux环境:
###############################
参考:
/article/8682538.html
http://baike.baidu.com/item/getcwd
获取当前绝对路径getcwd():
windows环境下头文件:
linux环境下头文件:
/article/4813948.html
#################################################
利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多博文:
头文件如下:
#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;
程序如下:
<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环境:
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环境:
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; }
###############################
参考:
/article/8682538.html
http://baike.baidu.com/item/getcwd
获取当前绝对路径getcwd():
windows环境下头文件:
#include <direct.h>
linux环境下头文件:
#include <unistd.h>
相关文章推荐
- 【Linux.Python】Python进程后台启动
- ubuntu touch ubuntu手机版
- centos安装SWFtools服务(pdf2swf)
- linux基本命令
- Linux glibc幽灵漏洞测试与修复方法
- linux命令ps aux|grep java和ps -ef|grep java 有什么区别?
- linux中select()函数分析
- 深入理解Linux守护进程
- Linux系统监测
- linux基础信息网站
- Linux中sar命令参数详解
- Linux 下释放内存,swap交换区缓存
- linux 学习第一天
- linux系统下mysql跳过密码验证登录
- Linux 下 C语言大文件读写(大于4G)
- crontab简单小结(实用)
- Centos开机自启动脚本的制作
- centos linux系统开机启动 禁止按下a e c键输入参数 方法
- centos7系统下安装nodejs开发环境
- linux PDF转换为SWF