C++读取文件家中所有的文件或者是特定后缀的文件

由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件。

下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件

参考:http://www.2cto.com/kf/201407/316515.html

#include <io.h>

#include <fstream>

#include <string>

#include <vector>

using namespace std;

?

?

//获取所有的文件名

void GetAllFiles( string path, vector<string>& files)

{

?

????long hFile = 0;

????//文件信息

????struct _finddata_t fileinfo;

????string p;

????if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)

????{

????????do

????????{

????????????if((fileinfo.attrib & _A_SUBDIR))

????????????{

????????????????if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)

????????????????{

????????????????????files.push_back(p.assign(path).append("\\").append(fileinfo.name) );

????????????????????GetAllFiles( p.assign(path).append("\\").append(fileinfo.name), files );

????????????????}

????????????}

????????????else

????????????{

????????????????files.push_back(p.assign(path).append("\\").append(fileinfo.name) );

????????????}

?

????????}while(_findnext(hFile, &fileinfo) == 0);

?

????????_findclose(hFile);

????}

?

}

?

//获取特定格式的文件名

void GetAllFormatFiles( string path, vector<string>& files,string format)

{

????//文件句柄

????long hFile = 0;

????//文件信息

????struct _finddata_t fileinfo;

????string p;

????if((hFile = _findfirst(p.assign(path).append("\\*" + format).c_str(),&fileinfo)) != -1)

????{

????????do

????????{

????????????if((fileinfo.attrib & _A_SUBDIR))

????????????{

????????????????if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)

????????????????{

????????????????????//files.push_back(p.assign(path).append("\\").append(fileinfo.name) );

????????????????????GetAllFormatFiles( p.assign(path).append("\\").append(fileinfo.name), files,format);

????????????????}

????????????}

????????????else

????????????{

????????????????files.push_back(p.assign(path).append("\\").append(fileinfo.name) );

????????????}

????????}while(_findnext(hFile, &fileinfo) == 0);

?

????????_findclose(hFile);

????}

}

?

// 该函数有两个参数,第一个为路径字符串(string类型,最好为绝对路径);

// 第二个参数为文件夹与文件名称存储变量(vector类型,引用传递)。

// 在主函数中调用格式(并将结果保存在文件"AllFiles.txt"中,第一行为总数):

?

int main()

{

????string filePath = "testimages\\water";

????vector<string> files;

????char * distAll = "AllFiles.txt";

?

????//读取所有的文件,包括子文件的文件

????//GetAllFiles(filePath, files);

?

????//读取所有格式为jpg的文件

????string format = ".jpg";

????GetAllFormatFiles(filePath, files,format);

????ofstream ofn(distAll);

????int size = files.size();

????ofn<<size<<endl;

????for (int i = 0;i<size;i++)

????{

????????ofn<<files[i]<<endl;

????????cout<< files[i] << endl;

????}

????ofn.close();

????return 0;

}

时间: 2024-10-27 12:34:43

C++读取文件家中所有的文件或者是特定后缀的文件的相关文章

查找特定后缀的文件

# -*- coding: cp936 -*- #python 27 #xiaodeng #查找特定后缀的文件 #方法一: import os #os.listdir,获取指定目录下的内容 #返回一个list #该目录下所有的内容都将被返回 import os def FileType(fileName,*args): for types in args: if fileName.endswith(types):return fileName if __name__ == '__main__':

python 之遍历目录树(可匹配输出特定后缀的文件)

涉及到的模块有os, fnmatch:1.通过os模块中的方法获取dir.subdir.files,通过os.path.join可拼接成完整路径: 2.fnmatch主要通过fnmatch.fnmatch(name, patterns),在patterns中匹配name元素,用于获取特定后缀的文件. 可将这一功能代码封装,以便后续调用: 1 #!/usr/bin/env python 2 import os, fnmatch 3 4 def all_files(root, patterns='*

环境变量,属性文件,文件基础操作,目录基础操作,遍历指定后缀名文件

环境变量和属性 环境变量相关: 1.得到某个/所有环境变量的值 2.设置环境变量的值 3.列出全部系统属性名 import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; public class Environment { public static void main(String[] args) { // TODO Auto-gener

获取指定路径下特定后缀的文件

# 获取指定路径下所有指定后缀的文件# dir 指定路径# ext 指定后缀,链表&不需要带点 或者不指定.例子:['xml', 'java']import osdef GetFileFromThisRootDir(dir,ext = None): allfiles = [] needExtFilter = (ext != None) for root,dirs,files in os.walk(dir): for filespath in files: filepath = os.path.j

利用python copy目录下所有特定后缀的文件

python 太好用了 这一次我想将子目录先所有jpg和pdf文件都copy出来放到一个文件夹,在网上找了个copy全部文件的代码修改一下就搞定了 import os import shutil source_path = os.path.abspath(r'F:\tool\') target_path = os.path.abspath(r'D:\putout') if not os.path.exists(target_path): os.makedirs(target_path) if o

shell 遍历目录 批量解压文件名含有某字符串及特定后缀的文件

#!/bin/sh mkdir  /home/zhengyk/Desktop/tmp  #创建临时文件夹,用来存放解压后的文件 #mkdir  /home/zhengyk/Desktop/local  #创建临时文件夹,用来存放过滤结果 list_alldir(){    for file in $1/* do if [ -d $file ]; then list_alldir $file else filename=${file##*/}  # 从路径中取出文件名及后缀 echo "$file

java利用SuffixFileFilter统计目录下特定后缀名文件的数目

/** * 文件处理类 * @author zhangcd * @date 2017年1月3日 */ public class FileUtil { /** * 得到所有后缀的数目 * * @param directory 目录 * @param suffixFilter 后缀 * @param pageCount 返回结果集限制 * @return list 集合 * @throws ArchiveException */ public static int getSuffixFilesNum

java中删除特定后缀名文件

String path = Environment.getExternalStorageDirectory() .getPath() + AppConstant.FILE_PATH + "/" + apkName ; File file = new File(path); deleteApk(path); /** * 删除其他版本安装包 */ public void deleteApk(String abpath) { String[] ss = abpath.split("

已知s.txt文件中有一个这样的字符串 请编写程序读取数据内容,把数据排序后写入 ss.txt文件

package cn.idcast5; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Arrays; /* * 需求:已知s.txt文件中有一个这样