C++获取文件夹下特定后缀的所有文件名

来源:互联网 发布:淘宝最恶毒的差评 编辑:程序博客网 时间:2024/05/29 09:30

一、前言

在使用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.csdn.net/cxf7394373/article/details/7195661#comments
2.使用C++获取文件夹中所有文件名(windows环境):http://blog.csdn.net/shaoxiaohu1/article/details/37499803


转载请注明作者和出处:http://blog.csdn.net/holamirai,未经允许请勿用于商业用途。

0 0