阅读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)