Linux和Windows系统下C++读取文件夹下文件名
来源:互联网 发布:每个淘宝号最多刷几单 编辑:程序博客网 时间:2024/05/19 21:17
参考博客
我的开发环境为Ubuntu+Qt,读取文件夹下文件名时会找不到io.h,通过查找资料了解到Windows和Linux下的头文件是不一样的,下面首先介绍Linux系统下文件名的获取
一、Linux系统下文件名获取
(1)C语言版本
//LINUX/UNIX c获取某个目录下的所有文件的文件名
#include <stdio.h>
#include <dirent.h>
int main(int argc, char * argv[])
{
struct dirent *ptr;
DIR *dir;
dir=opendir("./file");
printf("文件列表:\n");
while((ptr=readdir(dir))!=NULL)
{
//跳过'.'和'..'两个目录
if(ptr->d_name[0] == '.')
continue;
printf("%s\n",ptr->d_name);
}
closedir(dir);
return 0;
}
(2)C++版本
#include <iostream>
#include <vector>
#include <string>
#include <dirent.h>
using namespace std;
int main(int argc, char * argv[])
{
struct dirent *ptr;
DIR *dir;
string PATH = "./file";
dir=opendir(PATH.c_str());
vector<string> files;
cout << "文件列表: "<< endl;
while((ptr=readdir(dir))!=NULL)
{
//跳过'.'和'..'两个目录
if(ptr->d_name[0] == '.')
continue;
//cout << ptr->d_name << endl;
files.push_back(ptr->d_name);
}
for (int i = 0; i < files.size(); ++i)
{
cout << files[i] << endl;
}
closedir(dir);
return 0;
}
二、Windows平台
#include <io.h>
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
//获取所有的文件名
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) );
GetAllFiles( 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);
}
}
//获取特定格式的文件名
void GetAllFormatFiles( string path, vector<string>& files,string format)
{
//文件句柄
long hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*" + format).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) );
GetAllFormatFiles( p.assign(path).append("\\").append(fileinfo.name), files,format);
}
}
else
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
}
}while(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
// 该函数有两个参数,第一个为路径字符串(string类型,最好为绝对路径);
// 第二个参数为文件夹与文件名称存储变量(vector类型,引用传递)。
// 在主函数中调用格式(并将结果保存在文件"AllFiles.txt"中,第一行为总数):
int main()
{
string filePath = "testimages\\water";
vector<string> files;
char * distAll = "AllFiles.txt";
//读取所有的文件,包括子文件的文件
//GetAllFiles(filePath, files);
//读取所有格式为jpg的文件
string format = ".jpg";
GetAllFormatFiles(filePath, files,format);
ofstream ofn(distAll);
int size = files.size();
ofn<<size<<endl;
for (int i = 0;i<size;i++)
{
ofn<<files[i]<<endl;
cout<< files[i] << endl;
}
ofn.close();
return 0;
}
- Linux和Windows系统下C++读取文件夹下文件名
- 【C++】读取文件夹下所有文件名
- C/C++ 获取文件夹下所有文件名 windows和linux通用
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转载)
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
- Linux c 遍历文件夹下的文件名
- Windows下C获取文件夹下所有文件名
- Linux下C获取文件夹下所有文件名
- 在windows 、linux下读取目录下所有文件名
- 如何读取文件夹下的所有文件名
- c++读取文件夹下的所有文件名
- Matlab读取文件夹下的图像文件名
- vc++ 读取指定文件夹下所有文件名
- C++ 读取文件夹下的所有文件名
- Java方法总结
- 爬虫--今日头条ajax动态
- 前端面经-性能优化
- 行高line-height,元素居中
- Android按钮控制加减
- Linux和Windows系统下C++读取文件夹下文件名
- 速卖通外贸运营 从0到12万美金 外贸工厂转战跨境电商分享!
- Spring Cloud各组件重试总结
- intellij中类似于eclipse中update maven project的快捷键
- 线程与进程的区别与联系
- newCoder Wannafly挑战赛4:E 方程的解(待解决)
- java基础 2、char型变量中能不能存贮一个中文汉字?为什么?
- (4.1.2)基础总结篇之一:Activity生命周期
- GitHub账户设置多个SSH Keys