当前位置: 首页 > 编程笔记 >

C++实现读取特定路径下文件夹及文件名的方法

袁羽
2023-03-14
本文向大家介绍C++实现读取特定路径下文件夹及文件名的方法,包括了C++实现读取特定路径下文件夹及文件名的方法的使用技巧和注意事项,需要的朋友参考一下

本文所述实例代码主要实现读取给定路径下的所有文件夹名称或所有带后缀的文件名的功能。具体解决方法如下:
 
主要用到了以下几个头文件(类):io.h, fstream, string。
 
首先,读取某给定路径下所有文件夹与文件名称,并带完整路径。实现代码如下:

 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) );
           getFilesall( 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); 
   } 
 } 

该函数有两个参数,第一个为路径字符串(string类型,最好为绝对路径);第二个参数为文件夹与文件名称存储变量(vector类型,引用传递)。
在主函数中调用格式(并将结果保存在文件"AllFiles.txt"中,第一行为总数):

 char * filePath = "E:\\YunShi"; 
 vector<string> files; 
 char * distAll = "AllFiles.txt";
 getFilesall(filePath, files);
 ofstream ofn(distAll);
 int size = files.size(); 
 ofn<<size<<endl;
 for (int i = 0;i<size;i++) 
 { 
   ofn<<files[i]<<endl; 
 }
 ofn.close();

同理,只读取某给定路径下的当前文件夹名(以下类似,只给出函数,调用案例同上):

void getJustCurrentDir( 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(fileinfo.name);
           //files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
         }
           
       }  
     }while(_findnext(hFile, &fileinfo) == 0); 
     _findclose(hFile); 
   } 
 } 

只读取某给定路径下的当前文件名:

 void getJustCurrentFile( 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)) 
       { 
         ;
       } 
       else 
       { 
         files.push_back(fileinfo.name);
         //files.push_back(p.assign(path).append("\\").append(fileinfo.name) ); 
       }  
     }while(_findnext(hFile, &fileinfo) == 0); 
     _findclose(hFile); 
   } 
 } 

只读取某给定路径下的所有文件名(即包含当前目录及子目录的文件):

void getFilesAll( 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) );
           getFilesA( 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); 
   } 
 } 
 类似资料:
  • 本文向大家介绍基于C++实现读取指定路径文件,包括了基于C++实现读取指定路径文件的使用技巧和注意事项,需要的朋友参考一下 电脑配置:window10, 64位操作系统,基于x64的处理器,Microsoft Visual Studio Community 2019 Version 16.4.5 实现方法:使用 boost-filessystem 包。 使用 vcpkg 安装方法: .\vcpkg

  • 我正在为我的应用程序创建一个更新,其中有一个文件夹,其中包含保存的图像,我想在GridView中显示。我已经在使用离子库了。库的创建者(Koush Dutta)已经有了一个示例,可以做我想要的事情,并在GridView中显示SD卡中的所有图像。。 我想做的是在GridView中仅显示SD卡上特定文件夹(称为漫画)中的图像。我直接使用上面示例中的代码,只修改了一些名称。 我的问题是,我无法仅将SD卡

  • 本文向大家介绍java实现读取、删除文件夹下的文件,包括了java实现读取、删除文件夹下的文件的使用技巧和注意事项,需要的朋友参考一下 java实现读取、删除文件夹下的文件 方法二: 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我有一个带有图形编辑器的项目(如GMF技术),我需要读取一个文件。Jar库位于项目的类路径上。 VectorSync_1.0.0.201403121100.jar具有如下结构: 矢量同步: 图标/矢量同步。gif 这个导入的项目的类路径。Jar文件是: 我使用此方法尝试访问. xml文件: 但使用的方法始终返回null。 你能帮我解决这个问题吗 谢谢

  • 本文向大家介绍php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名),包括了php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了php文件操作的方法。分享给大家供大家参考,具体如下: 一、删除文件 unlink() 语法: int unlink(string filename); 返回值: 整数

  • 本文向大家介绍Python获取指定文件夹下的文件名的方法,包括了Python获取指定文件夹下的文件名的方法的使用技巧和注意事项,需要的朋友参考一下 本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名。 一、os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件。 该函数可以得到一个三元tupple(dirpath, dirnames, fil