• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

AU3遍历(查询)文件夹下所有文件,并输出保存在txt

AutoIT3 奇跡の海 2年前 (2017-06-19) 477次浏览 已收录 0个评论 扫描二维码

实例介绍

文件夹下全是.png的图片,需把每张图片名保存在txt供程序读取

#include<iostream>  
#include "io.h"  
#include<fstream>  
using namespace std;  
  
ofstream MyFile("FileName.txt");  
  
bool transfer(string fileName , int txtNum = 0)  
{  
    _finddata_t fileInfo;  
    long handle = _findfirst(fileName.c_str(), &fileInfo);  
  
    if (handle == -1L)  
    {  
        cerr<< "failed to transfer files" <<endl;  
        return false;  
    }  
  
    do   
    {  
        txtNum ++;  
        MyFile<< fileInfo.name <<endl;  
    } while (_findnext(handle, &fileInfo) == 0);  
    cout<< " .txt files' number:  " << txtNum <<endl;;  
  
    return true;  
}  
  
void main()  
{  
    //ofstream MyFile(FileName.txt);  
  
    string FilePath="C:\\Users\\Administrator\\Desktop\\HOG+SVM\\数据集\\INRIAPerson\\INRIAPerson\\INRIAPerson\\96X160H96\\Train\\pos\\*.png";//注意通配符* ? 的用法,这个就是寻找XXX.png的文件,不管有多少个XXX, 如果是?.png,就是一个X,即X.png  
    int num=0;  
  
    transfer(FilePath,num);  
  
}  

AU3遍历(查询)文件夹下所有文件,并输出保存在txt

参考这个帖子的:http://www.cnblogs.com/summerRQ/articles/2375749.html

2. 遍历文件夹及其子文件夹下所有文件。操作系统中文件夹目录是树状结构,使用深度搜索策略遍历所有文件。用到_A_SUBDIR属性,可运行程序如下:

void dfsFolder(string folderPath, ofstream &fout)  
{  
    _finddata_t FileInfo;  
    string strfind = folderPath + "\\*";  
    long Handle = _findfirst(strfind.c_str(), &FileInfo);  
      
    if (Handle == -1L)  
    {  
        cerr << "can not match the folder path" << endl;  
        exit(-1);  
    }  
    do{  
        //判断是否有子目录  
        if (FileInfo.attrib & _A_SUBDIR)      
        {  
            //这个语句很重要  
            if( (strcmp(FileInfo.name,".") != 0 ) &&(strcmp(FileInfo.name,"..") != 0))     
            {  
                string newPath = folderPath + "\\" + FileInfo.name;  
                dfsFolder(newPath, fout);  
            }  
        }  
        else    
        {  
            fout << folderPath << "\\" << FileInfo.name  << " ";  
        }  
    }while (_findnext(Handle, &FileInfo) == 0);  
  
    _findclose(Handle);  
    fout.close();  
}  

在判断有无子目录的if分支中,由于系统在进入一个子目录时,匹配到的头两个文件(夹)是”.”(当前目录),”..”(上一层目录)。需要忽略掉这两种情况。当需要对遍历到的文件做处理时,在else分支中添加相应的代码就好
PS:突然在网上看到一个绝技!
在许多样本的那个目录下新建一个文本txt,在其中输入如下:
dir /b/s/p/w *.png>train_list.txt
@pause
保存,改为.bat文件运行,就直接可以生成一个train_list.txt,里面包含目录
方法二:

利用Directory类实现文件夹中特定格式图像的遍历,Directory的头文件是windows.h。

  
#include<opencv2/opencv.hpp>  
#include<iostream>  
#include<vector>  
#include<string>  
#include <windows.h>  
  
using namespace std;  
using namespace cv;  
  
  
void main()  
{  
    Directory dir;  
  
    string path1 = "C:\\Users\\Administrator\\Desktop\\date\\MIT\\MIT人脸库\\faces";  
    string  exten1 = "*.bmp";  
  
    vector<string> filenames = dir.GetListFiles(path1, exten1, false);  
  
    int size = filenames.size();  
  
    for (int i = 0; i < size;i++)  
    {  
        cout << filenames[i] << endl;  
    }  
}  

参见:http://blog.csdn.net/hei_ya/article/details/51387624


版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->AU3遍历(查询)文件夹下所有文件,并输出保存在txt!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址