读取文件夹中文件所有文件名

18 篇文章 0 订阅

来源:opencv中samples\cpp\latentsvm_multidetect.cpp

static void readDirectory( const string& directoryName, vector<string>& filenames, bool addDirectoryName=true )
{
    filenames.clear();

#if defined(WIN32) | defined(_WIN32)
    struct _finddata_t s_file;
    string str = directoryName + "\\*.*";

    intptr_t h_file = _findfirst( str.c_str(), &s_file );
    if( h_file != static_cast<intptr_t>(-1.0) )
    {
        do
        {
            if( addDirectoryName )
                filenames.push_back(directoryName + "\\" + s_file.name);
            else
                filenames.push_back((string)s_file.name);
        }
        while( _findnext( h_file, &s_file ) == 0 );
    }
    _findclose( h_file );
#else
    DIR* dir = opendir( directoryName.c_str() );
    if( dir != NULL )
    {
        struct dirent* dent;
        while( (dent = readdir(dir)) != NULL )
        {
            if( addDirectoryName )
                filenames.push_back( directoryName + "/" + string(dent->d_name) );
            else
                filenames.push_back( string(dent->d_name) );
        }

        closedir( dir );
    }
#endif

    sort( filenames.begin(), filenames.end() );
}

同样在opencv中还有另外一个读取文件夹中所有文件,或者所有文件夹,或者所有文件夹,或者所有文件名和所有文件夹名的部分,由于代码比较多,在这里就不一一列出来,只给出位置(我使用的是opencv2.4.8):
头文件在contrib.hpp头文件中,而实现在contrib下的src下的inputoutput.cpp中,这里给出另一个网站的使用例程:
http://blog.csdn.net/fengbingchun/article/details/42435901

另外,在windows下可以使用system来获取文件夹下所有文件的名称,比如在windows下可以通过命令行:

dir/b >list.txt

将当前目录下的所有文件名写到文件list.txt中去,在这里可以在代码中用

system("dir/b >list.txt");

来实现,这里与上面的区别是这里只能将文件名写到文件下,而不能实时获取。
同理,这里也提供了一种在代码中执行命令行命令的方法,这就是直接用system就可以了。
下面列出dir的一些常见命令参数:
cd功能:改变当前操作目录。

cd 文件夹名字 如:cd windows 进入根目录下的windows目录

dir功能:列出磁盘上所有的或指定的文件目录。显示内容包含卷标、文件名、文件大小、文件建立日期和时间、目录名、磁盘剩余空间等。

格式:DIR [盘符][路径][文件名][/P][/W][/S][/B][/A]

参数说明:

/P:当显示的信息超过一屏时暂停显示,直至按任意键才继续显示

/W:以横向排列的形式显示文件名和目录名,每行5个(不显示文件大小、建立日期和时间)

/S:列出指定目录及其子目录中的所有内容(但不包括系统文件和隐含文件)

/B:仅列出文件名称,而不列出日期、大小等信息

/A:显示包括系统文件和隐含文件

以输出本人电脑F盘“ok”目录下所有文件夹及文件名到文本文档的操作,来示范如何批量输出指定目录下的文件(文件夹)名: 1.点击“开始”>“运行”>输入“cmd”>“确定”进入命令提示符界面 2.输入“f:”回车,切换当前目录为F盘 3.输入“cd ok”回车,切换目录为“ok”文件夹 4.输入“dir/s/b >list.txt” 回车后“F:ok”目录下就会生成一个文件名为“list”的文本文档,里面列清了所有ok文件夹下的文件夹名称及文件名称。若不需要目录中的路径,把/s去掉就行了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值