zoukankan      html  css  js  c++  java
  • 1获取文件名字并保存-类的封装

    输入

    运行结果

    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

    #pragma once
    #ifndef _FINDPATH_H_
    
    #define _FINDPATH_H_
    //1#ifndef...#endif 使得编译器可以根据这个名字是否被定义,再决定要不要继续编译该头文中后续的内容
    //2避免头文件添加函数定义和变量声明
    
    #include <io.h>
    #include <fstream>
    #include <string>
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    class Find_path
    {
    
    public:
    
    	//默认路径
    	string filePath;
    	//默认保存的txt路径
    	string Txt_path ;
    	//默认读取的文件类型
    	string format ;
    	
    	//初始化函数
    	 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();
    
    }
    

      

  • 相关阅读:
    Windows共享上网的做法
    如何花更少的时间学习更多的知识
    因权限引起的svn提交失败的错误及其解决办法
    ArcGIS二次开发入门(一)
    GeoTiff如何存储颜色表的研究
    html5文件夹上传源码
    vue文件夹上传源码
    前端文件夹上传源码
    asp.net文件夹上传源码
    使用webuploader实现大文件上传分片上传
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/13090735.html
Copyright © 2011-2022 走看看