码迷,mamicode.com
首页 > 其他好文 > 详细

1获取文件名字并保存-类的封装

时间:2020-06-11 09:16:18      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:lazy   find   assign   初始化   存在   path   ext   sig   define   

 

输入

技术图片

 

 

运行结果

技术图片

 

 

 

技术图片

 

 

main.cpp

#include "Fing_path.h"




int main()
{
	

	Find_path Get_imgpath ;
	
    //1获取所有的文件名字
	// Get_imgpath.GetAllFiles(filePath, files);
	//2获取特定文件名字
    Get_imgpath.GetAllFormatFiles(Get_imgpath.filePath, Get_imgpath.files, Get_imgpath.format);
	//3保存txt
	Get_imgpath.Save_txt(Get_imgpath.Txt_path, Get_imgpath.files);


	
	return 0;
}

  Fing_path.h

#ifndef FING_PATH

#define FING_PATH
//1#ifndef...#endif 使得编译器可以根据这个名字是否被定义,再决定要不要继续编译该头文中后续的内容
//2避免头文件添加函数定义和变量声明

#include <io.h>
#include <fstream>
#include <string>
#include <vector>
#include <iostream>

using namespace std;

class Find_path
{

public:

	//默认路径
	string filePath = "F://dongdong//0my_project//1laboratory//拼接//Project2//2Opencv_stitch//Test_image";
	//默认保存的txt路径
	string Txt_path = "AllFiles.txt";
	//默认读取的文件类型
	string format = ".bmp";
	
	//初始化函数
    Find_path();
	//保存获取的文件名列表
	std::vector<std::string> files;
	//1获取所有文件名字
	void GetAllFiles(std::string path, std::vector<std::string>& files);
	//2获取指定类型文件名字
	void GetAllFormatFiles(std::string path, std::vector<std::string>& files, std::string format);
	//3保存成txt
	void Save_txt(std::string Txt_path, std::vector<std::string>& files);

};



#endif // !Fing_path.cpp

  Fing_path.cpp

#include "Fing_path.h"

/*
功能:初始化
输入:
	无
输出:
	无
*/

 Find_path::Find_path() 
 {
 
 
 }

 /*
 功能:获取所有的文件名
 输入:
 string path,             要搜索的文件夹名字
 vector<string>& files,   用来保存获取的文件列表
 输出:
 无
 */

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

	intptr_t   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(fileinfo.name));  //将文件路径保存,也可以只保存文件名:    p.assign(path).append("\\").append(fileinfo.name)
			}

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

		_findclose(hFile); //结束查找
	}

}


/*
功能:获取特定格式的文件名
输入:
	string path,             要搜索的文件夹名字   
	vector<string>& files,   用来保存获取的文件列表
	string format            要找的特定类型文件 默认 bmp
输出:
	无
*/
void Find_path::GetAllFormatFiles(string path, vector<string>& files, string format)
{
	//文件句柄  
	intptr_t      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(fileinfo.name));  //将文件路径保存,也可以只保存文件名:    p.assign(path).append("\\").append(fileinfo.name)
			}
		} while (_findnext(hFile, &fileinfo) == 0);

		_findclose(hFile);
	}
}

/*
功能:将文件名字列表保存在TXT文件
输入:
	string Txt_path           要保存的TXT文件名字
	vector<string>& files     已经获取的文件列表
输出:
	无
*/
void Find_path::Save_txt(string Txt_path, vector<string>& files)
{
	//3保存结果
	ofstream ofn(Txt_path);//打开TXT
	int size = files.size();//获取大小
	ofn << size << endl;//保存
	for (int i = 0; i<size; i++)
	{
		ofn << files[i] << endl; // 写入文件
		cout << files[i] << endl;//输出到屏幕
	}
	ofn.close();

}

  

 

1获取文件名字并保存-类的封装

标签:lazy   find   assign   初始化   存在   path   ext   sig   define   

原文地址:https://www.cnblogs.com/kekeoutlook/p/13090735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!