read_file.h
#pragma once
#pragma once
#include <iostream>
#include <io.h>
//#include <filesystem>
#include <vector>
#include<string>
//这个类表示获取所有的某个目录下的所有文件
class ReadFile {
public:
ReadFile() {}
void GetFiles(std::string path, std::vector<std::string>& files);
//void Test();
void Test(std::string& directory);
};
read_file.cpp
#include"read_file.h"
void ReadFile::GetFiles(std::string path, std::vector<std::string>& files) {
//文件句柄
intptr_t h_file = 0;
//文件信息,声明一个存储文件信息的结构体
struct _finddata_t file_info;
std::string dir; //字符串,存放路径
if ((h_file = _findfirst(dir.assign(path).append("\\*").c_str(), &file_info)) != -1) {//若查找成功,则进入
do {
if ((file_info.attrib & _A_SUBDIR)) {
if (0 != strcmp(file_info.name, ".") && 0 != strcmp(file_info.name, ".."))
GetFiles(dir.assign(path).append("\\").append(file_info.name), files);
}
else {
files.push_back(dir.assign(path).append("\\").append(file_info.name));
}
} while (0 == _findnext(h_file, &file_info));
_findclose(h_file);
}
}
//void ReadFile::Test() {
void ReadFile::Test(std::string& directroy) {
//std::string FilePath = "D:/visual stdio 2017代码";//自己设置目录
std::vector<std::string> file_name_list;
//std::string filepath = directroy;
//获取该路径下的所有文件
GetFiles(directroy, file_name_list);
for (int i = 0; i < file_name_list.size(); i++) {
std::string path = file_name_list[i].c_str();
size_t pos = path.find_last_of('\\');
std::string str(path.substr(pos + 1));
std::cout << str << std::endl;
//std::cout << file_name_list[i].c_str() << std::endl;
}
}
main.cpp
#include"read_file.h"
int main(int argc, char* argv[]) {
for (int i = 1; i < argc; i++) {
ReadFile rd;
std::string str(argv[i]);
rd.Test(str);
}
return 0;
}