欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)讀取特定路徑下文件夾及文件名的方法

 更新時(shí)間:2014年07月16日 11:56:05   投稿:shichen2014  
這篇文章主要介紹了C++實(shí)現(xiàn)讀取特定路徑下文件夾及文件名的方法,需要的朋友可以參考下

本文所述實(shí)例代碼主要實(shí)現(xiàn)讀取給定路徑下的所有文件夾名稱或所有帶后綴的文件名的功能。具體解決方法如下:
 
主要用到了以下幾個(gè)頭文件(類):io.h, fstream, string。
 
首先,讀取某給定路徑下所有文件夾與文件名稱,并帶完整路徑。實(shí)現(xiàn)代碼如下:

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

該函數(shù)有兩個(gè)參數(shù),第一個(gè)為路徑字符串(string類型,最好為絕對(duì)路徑);第二個(gè)參數(shù)為文件夾與文件名稱存儲(chǔ)變量(vector類型,引用傳遞)。
在主函數(shù)中調(diào)用格式(并將結(jié)果保存在文件"AllFiles.txt"中,第一行為總數(shù)):

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

同理,只讀取某給定路徑下的當(dāng)前文件夾名(以下類似,只給出函數(shù),調(diào)用案例同上):

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

只讀取某給定路徑下的當(dāng)前文件名:

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

只讀取某給定路徑下的所有文件名(即包含當(dāng)前目錄及子目錄的文件):

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

相關(guān)文章

  • C語言超詳細(xì)講解字符串相乘

    C語言超詳細(xì)講解字符串相乘

    這篇文章主要介紹了用C語言如何來實(shí)現(xiàn)字符串相乘的方法,這里我們會(huì)利用到memset函數(shù),memset函數(shù)是對(duì)較大的結(jié)構(gòu)體或數(shù)組進(jìn)行清零操作的一種最快方法,可以說是初始化內(nèi)存的“萬能函數(shù)”,下面我們?cè)敿?xì)了解一下
    2022-03-03
  • C++?Boost?Spirit進(jìn)階教程

    C++?Boost?Spirit進(jìn)階教程

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C++構(gòu)造函數(shù)初始化順序詳解

    C++構(gòu)造函數(shù)初始化順序詳解

    這篇文章主要介紹了C++構(gòu)造函數(shù)初始化順序詳解,是對(duì)C++代碼的運(yùn)行機(jī)制深入探討,需要的朋友可以參考下
    2014-10-10
  • C語言中#define定義的標(biāo)識(shí)符和宏實(shí)例代碼

    C語言中#define定義的標(biāo)識(shí)符和宏實(shí)例代碼

    C語言中,可以用#define定義一個(gè)標(biāo)識(shí)符來表示一個(gè)常量,下面這篇文章主要給大家介紹了關(guān)于C語言中#define定義的標(biāo)識(shí)符和宏的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • CFileDialog的鉤子函數(shù)解決對(duì)話框的多選之DoModal問題

    CFileDialog的鉤子函數(shù)解決對(duì)話框的多選之DoModal問題

    前幾天領(lǐng)導(dǎo)問我一個(gè)問題:就是使用CFileDialog類在設(shè)置多選時(shí)選中的文件所放的文件緩沖區(qū)不知設(shè)置多大合適,本文將詳細(xì)介紹,需要的朋友可以參考下
    2012-12-12
  • C/C++程序編譯流程詳解

    C/C++程序編譯流程詳解

    C/C++程序編譯過程包括下面4個(gè)階段:1.預(yù)處理,2.編譯,3.匯編,4.鏈接。下面我們就來詳細(xì)分析下這幾個(gè)階段。
    2016-04-04
  • 用C語言程序判斷大小端模式

    用C語言程序判斷大小端模式

    本文介紹了用C語言程序判斷大小端的方法,與大家分享一下。
    2013-04-04
  • OpenCV實(shí)現(xiàn)簡(jiǎn)易標(biāo)定板

    OpenCV實(shí)現(xiàn)簡(jiǎn)易標(biāo)定板

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)簡(jiǎn)易標(biāo)定板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C語言線性表順序表示及實(shí)現(xiàn)

    C語言線性表順序表示及實(shí)現(xiàn)

    這篇文章主要介紹了C語言線性表順序表示及實(shí)現(xiàn),線性表是最常用且最簡(jiǎn)單的一種數(shù)據(jù)結(jié)構(gòu)。簡(jiǎn)而言之,一個(gè)線性表是n個(gè)數(shù)據(jù)元素的有限序列
    2022-07-07
  • C++中引用的使用總結(jié)

    C++中引用的使用總結(jié)

    以下是對(duì)C++中引用的使用進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10

最新評(píng)論