C++实现Linux和Windows下遍历指定目录下的文件
2016-12-12 11:30
931 查看
一、Linux下遍历方法
方法非常简单,这里不多说了,可以直接看代码#include <dirent.h>//遍历系统指定目录下文件要包含的头文件 #include <iostream> using namespace std; int main() { DIR* dir = opendir("/home/hanchao/picture");//打开指定目录 dirent* p = NULL;//定义遍历指针 while((p = readdir(dir)) != NULL)//开始逐个遍历 { //这里需要注意,linux平台下一个目录中有"."和".."隐藏文件,需要过滤掉 if(p->d_name[0] != '.')//d_name是一个char数组,存放当前遍历到的文件名 { string name = "/home/hanchao/picture/" + string(p->d_name); cout<<name<<endl; } } closedir(dir);//关闭指定目录 }这里需要注意,由于p->d_name存放的是文件名,所以也可以通过像strstr(p->d_name,".jpg")等来判断,遍历指定类型的文件。
文件夹中:
运行结果:
二、Windows下遍历指定目录下所有文件
同样,直接看代码吧。#include <io.h>//所需头文件 #include <iostream> #include <string> using namespace std; void getAllFileNames(const string& folder_path) { _finddata_t file; long flag; string filename = folder_path + "\\*.jpg";//遍历制定文件夹内的jpg文件 if ((flag = _findfirst(filename.c_str(), &file)) == -1)//目录内找不到文件 { cout << "There is no such type file" << endl; } else { //通过前面的_findfirst找到第一个文件 string name = folder_path + "\\" + file.name;//file.name存放的是遍历得到的文件名 cout << name << endl; //依次寻找以后的文件 while (_findnext(flag, &file) == 0) { string name = string(folder_path + "\\" + string(file.name)); cout << name << endl; } } _findclose(flag); } int main() { getAllFileNames("test");//test是制定的目录 }这里在Windows下寻找所有文件也会有“.”和".."文件,如果要遍历目录下的所有文件,则需要过滤这两个,过滤方法同Linux方法。
test原目录下文件:
运行结果:
相关文章推荐
- C++实现Linux下遍历指定目录下的文件
- 用C++实现遍历文件夹下所有文件,windows ,linux 都能用
- C++遍历目录,并把目录里超过7天的文件删除(跨平台windows&linux)
- 用C++实现遍历指定目录下的[指定文件后缀名]文件
- Linux下递归遍历指定目录下的文件内容并删除的函数实现
- C/C++遍历目录下的所有文件(Windows/Linux)
- 跨平台的目录遍历实现方法(windows和linux已经测试)
- 扫描目录中指定后缀名的文件(支持WINDOWS跟LINUX)
- php实现遍历目录并删除指定文件中指定内容
- windows 与linux 下用C++读取sqlite实现文件复制(二)
- windows 与linux 下用C++读取sqlite实现文件复制(三)
- windows 与linux 下用C++读取sqlite实现文件复制(一)
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- Linux C :遍历输出指定目录下的所有文件
- Linux C :遍历输出指定目录下的所有文件
- 递归遍历Linux下的目录文件源码实现
- C++实现查找指定目录下的文件
- C/C++ 遍历linux目录下所有文件并已树的形式打印
- Linux下使用samba服务器实现与Windows的目录文件共享
- Linux下 C语言实现遍历指定目录下指定格式的文件