linux:
#include
#include
#include
#include
int main(int argc,char *ar**)
if((dp=opendir(ar**[1]))==null)
printf("can't open %s",ar**[1]);
while (((dirp=readdir(dp))!=null) && (n<=50))
printf("\n");
closedir(dp);
return 0;
}某牛人封裝好的類
#include "stdafx.h"
#include "stdlib.h"
#include "direct.h"
#include "string.h"
#include "io.h"
#include "stdio.h"
#include
using namespace std;
class cbrowsedir
;cbrowsedir::cbrowsedir()
bool cbrowsedir::setinitdir(const char *dir)
bool cbrowsedir::beginbrowse(const char *filespec)
bool cbrowsedir::browsedir(const char *dir,const char *filespec)
} while (_findnext(hfile,&fileinfo) == 0);
_findclose(hfile);
}//查詢dir中的子目錄
//因為在處理dir中的檔案時,派生類的processfile有可能改變了
//當前目錄,因此還要重新設定當前目錄為dir。
//執行過_findfirst後,可能系統記錄下了相關資訊,因此改變目錄
//對_findnext沒有影響。
_chdir(dir);
if ((hfile=_findfirst("*.*",&fileinfo)) != -1)
}} while (_findnext(hfile,&fileinfo) == 0);
_findclose(hfile);
}return true;
}bool cbrowsedir::processfile(const char *filename)
void cbrowsedir::processdir(const char
*currentdir,const char *parentdir)
//從cbrowsedir派生出的子類,用來統計目錄中的檔案及子目錄個數
class cstatdir:public cbrowsedir
//返回檔案個數
int getfilecount()
//返回子目錄個數
int getsubdircount()
protected:
//覆寫虛函式processfile,每呼叫一次,檔案個數加1
virtual bool processfile(const char *filename)
//覆寫虛函式processdir,每呼叫一次,子目錄個數加1
virtual void processdir
(const char *currentdir,const char *parentdir)
};void main()
//開始遍歷
statdir.beginbrowse("*.*");
// printf("檔案總數: %d\n子目錄總數:%d\n",statdir.getfilecount(),statdir.getsubdircount());}}
**來自:
ps:我的新
部落格
C 遍歷資料夾下所有檔案
主要用到 finddata t結構體,和 findfirst findnext findclose三個函式。他們都屬於io.h標頭檔案。1 結構體 用來儲存檔案各種資訊 struct finddata t 1 unsigned atrrib 檔案屬性的儲存位置。它儲存乙個unsigned單元,用於表...
c 遞迴遍歷資料夾下所有指定字尾的檔案
只在windows下測試通過,linux沒有測試。string p void getfiles string path,vector files,string postfix else while findnext hfile,fileinfo 0 findclose hfile 最前面的 stri...
C 遍歷資料夾下的所有檔案
資料分多個檔案儲存,讀取資料就需要對多個檔案進行操作。首先就需要定位到檔案的名字,之後再對檔案進行相應的讀寫操作。多次涉及多檔案的讀寫操作,現將這個實現總結一下,方便自己和他人使用。具體 如下 cpp view plain copy include stdafx.h include include ...