閱讀430 返回首頁    go 阿裏雲 go 技術社區[雲棲]


c遍曆所有文件夾中的文件

一個小程序,可以遍曆所有文件夾中的文件並打印出來


#include "stdio.h" 
#include "windows.h"

void find(char * lpPath) 
{
	char szFind[MAX_PATH],szFile[MAX_PATH];

	WIN32_FIND_DATA FindFileData;

	strcpy(szFind,lpPath);
	strcat(szFind,"\\*.*");

	HANDLE hFind=::FindFirstFile(szFind,&FindFileData);

	if(INVALID_HANDLE_VALUE == hFind) 
		return;

	while(TRUE) 
	{
		if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
		{
			if(FindFileData.cFileName[0]!='.') 
			{
				strcpy(szFile,lpPath);
				strcat(szFile,"\\");
				strcat(szFile,FindFileData.cFileName);
				find(szFile);
			}
		}
		else 
		{
			printf("%s\n",FindFileData.cFileName);
			//printf("%s\n",FindFileData.dwFileAttributes);
			//printf("%d\n",FindFileData.ftCreationTime.dwHighDateTime);
			//printf("%d\n",FindFileData.ftCreationTime.dwLowDateTime);
		}
		if(!FindNextFile(hFind,&FindFileData)) 
			break;
	}
}


 
void main() 
{
	char filepath[MAX_PATH]="e:\\findobj";
	find(filepath);

	//system("PAUSE");
}


這個find函數是按字母排序進入文件夾查找【文件夾也在字母排序中】,這個特性十分重要,因為直接決定了我寫的另外一個小程序copy files功能的實現。

加了一句話  printf(szFile);【另外,由這句話發現,在VC++6.0環境中可以直接printf變量,而不用格式占位符。。。】


while(TRUE) 
	{
		if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
		{
			if(FindFileData.cFileName[0]!='.') 
			{
				strcpy(szFile,lpPath);
				strcat(szFile,"\\");
				strcat(szFile,FindFileData.cFileName);

				printf(szFile);
				find(szFile);
			}
		}
		else 
		{
			printf("%s\n",FindFileData.cFileName);
			//printf("%s\n",FindFileData.dwFileAttributes);
			//printf("%d\n",FindFileData.ftCreationTime.dwHighDateTime);
			//printf("%d\n",FindFileData.ftCreationTime.dwLowDateTime);
		}
		if(!FindNextFile(hFind,&FindFileData)) 
			break;
	}


輸出:



最後更新:2017-04-03 05:39:11

  上一篇:go Coursera Scala 5-2:Pairs和Tuple
  下一篇:go Android 通過網頁打開自己的APP(scheme)