一、前言
在使用VS进行项目开发时,经常需要引入其他库的目录,每次配置都要重复敲入各.lib的文件名,特别烦躁,因此,本文将实现获取某一文件夹下特定后缀的所有文件名,并存入一个fileName.txt 文件中。
二、实现
main.cpp文件代码如下:
#include <string>
#include <io.h>
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;
/************************************************************************/
/* 获取文件夹下所有文件名
输入:
path : 文件夹路径
exd : 所要获取的文件名后缀,如jpg、png等;如果希望获取所有
文件名, exd = ""
输出:
files : 获取的文件名列表
HolaMirai 2016/11/24 添加保存文件名到.txt文件中
shao, 20140707
*/
/************************************************************************/
void getFiles( string path, string exd, vector<string>& files )
{
//文件句柄
long hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string pathName, exdName;
if (0 != strcmp(exd.c_str(), ""))
{
exdName = "\\*." + exd;
}
else
{
exdName = "\\*";
}
if((hFile = _findfirst(pathName.assign(path).append(exdName).c_str(),&fileinfo)) != -1)
{
do
{
//如果是文件夹中仍有文件夹,迭代之
//如果不是,加入列表
// 不推荐使用,硬要使用的话,需要修改else 里面的语句
/*if((fileinfo.attrib & _A_SUBDIR))
{
if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
getFiles( pathName.assign(path).append("\\").append(fileinfo.name), exd, files );
}
else */
{
if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
//files.push_back(pathName.assign(path).append("\\").append(fileinfo.name)); // 要得到绝对目录使用该语句
//如果使用
files.push_back(fileinfo.name); // 只要得到文件名字使用该语句
}
}while(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
/*
* argv[1]: 文件夹目录
* argv[2]: 文件后缀
*/
int main(int argc, char *argv[])
{
if (argc != 3)
{
printf("please input the folder path and postfix.\n" \
"argv[1]:folder path\n"\
"argv[2]:postfix\n");
return 0;
}
vector<string> files;
//获取该路径下的所有jpg文件
getFiles(argv[1], argv[2], files);
ofstream outf;
outf.open("fileName.txt");
int size = files.size();
for (int i = 0;i < size;i++)
{
outf<<files[i].c_str()<<endl;
//cout<<files[i].c_str()<<endl;
}
return 0;
}
三、运行
打开CMD窗口,cd 到getFileNames.exe所在目录,并传入参数,如下所示:
在桌面上会生成fileName.txt文件,打开它,内容如下:
四、参考资料
1.C++ 获取文件夹下的所有文件名:http://blog.youkuaiyun.com/cxf7394373/article/details/7195661#comments
2.使用C++获取文件夹中所有文件名(windows环境):http://blog.youkuaiyun.com/shaoxiaohu1/article/details/37499803
转载请注明作者和出处:http://blog.youkuaiyun.com/holamirai,未经允许请勿用于商业用途。