程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C++遞歸調用遍歷目錄樹實現代碼

C++遞歸調用遍歷目錄樹實現代碼

編輯:關於C語言
 

#include

#include

/* 預處理申明 */

//#pragma comment (lib, "User32.lib")

/* 函數申明 */

DWORD ListAllFileInDrectory(LPSTR szPath);


/* 全局變量 */

//記錄所有的文件和目錄數

DWORD dwTotalFileNum = 0;


/* ************************************

* DWORD ListAllFileInDrectory(LPSTR szPath)

* 功能 遍歷目錄及所有子目錄,打印路徑

*

* 參數 LPTSTR szPath,為需遍歷的目錄

*

* 返回值 0代表執行完成,1代碼發生錯誤

**************************************/

DWORD ListAllFileInDrectory(LPSTR szPath)

{

CHAR szFilePath[MAX_PATH];


WIN32_FIND_DATA FindFileData;

HANDLE hListFile;

CHAR szFullPath[MAX_PATH];


//構造代表子目錄和文件夾路徑的字符串,使用通配符“*”

lstrcpy(szFilePath, szPath);

lstrcat(szFilePath, "\\*");

//查找第一個文件/目錄,獲得查找句柄

hListFile = FindFirstFile(szFilePath,&FindFileData);


if(hListFile==INVALID_HANDLE_VALUE)

{

printf("錯誤:%d",GetLastError());

return 1;

}

else

{

do

{

// 過濾“.”和“..”,不需要遍歷

if(lstrcmp(FindFileData.cFileName,TEXT("."))==0||

lstrcmp(FindFileData.cFileName,TEXT(".."))==0)

{

continue;

}

//構造成全路徑

wsprintf(szFullPath,"%s\\%s",

szPath,FindFileData.cFileName);

dwTotalFileNum++;

//打印

printf("\n%d\t%s\t",dwTotalFileNum,szFullPath);


//如果是目錄,則遞歸調用,列舉下級目錄

if(FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)

{

printf("

");

ListAllFileInDrectory(szFullPath);

}

}

while(FindNextFile(hListFile, &FindFileData));

}

return 0;

}


/* ************************************

* int main(int argc, PCHAR argv[])

* 功能 調用ListAllFileInDrectory

* 遍歷目錄下的文件和子目錄

*

* 參數 argv[1]為需遍歷的路徑,如果為空則獲取

* 當前路徑

*

*

**************************************/

int main(int argc, PCHAR argv[])

{

if(argc == 2)

{

ListAllFileInDrectory(argv[1]);

}

else

{

CHAR szCurrentPath[MAX_PATH];

GetCurrentDirectory(MAX_PATH,szCurrentPath);

ListAllFileInDrectory(szCurrentPath);

}

 

printf("%d",MAX_PATH);

return 0;

}
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved