[Windowns C]递归遍历指定目录下的子目录和文件

/*
	功能:演示了利用C语言递归遍历指定目录下的子目录和文件!
	说明:经修改也可以搜索文件名符合特定格式的文件,如修改“\\*.*”为“\\*.log”
*/
#include <iostream> 
#include <string> 
#include <io.h>

using namespace std;

void filesearch(string path, int layer)
{ 
	struct _finddata_t filefind; 
	string curr = path + "\\*.*";							// 修改此处改变搜索条件
	int done = 0, i, handle; 
	if((handle = _findfirst(curr.c_str(), &filefind)) != -1)
	{
		while(!(done = _findnext(handle, &filefind)))
		{ 
			if(strcmp(filefind.name, "..") == 0)
				continue;
			for(i = 0;i <layer; i++)
				printf("\t");
			if((_A_SUBDIR == filefind.attrib))				// 是目录
			{             
				printf("[Dir]:\t%s\n", filefind.name);
				curr = path + "\\" + filefind.name;
				filesearch(curr, layer+1);					// 递归遍历子目录
			}
			else   
			{ 
				printf("[File]:\t%s\n", filefind.name);
			} 
		}
		_findclose(handle);
	}
} 
int main() 
{         
	string path("E:\\Program\\Proc");
	filesearch(path, 0);

	return 0; 
}

 

运行结果如:

[File]: 20111010.log
[File]: 20111011.log
[File]: 20111012.log
[File]: 20111013.log
[File]: 20111014.log
[Dir]:  demo10_1
        [Dir]:  Debug
                [File]: demo10_1.exe
                [File]: demo10_1.obj
                [File]: demo10_1.pdb
                [File]: demo10_1.sbr
                [File]: vc60.pdb
        [File]: demo10_1.c
        [File]: demo10_1.dsp
        [File]: demo10_1.dsw
        [File]: demo10_1.ncb
        [File]: demo10_1.opt
        [File]: demo10_1.pc
        [File]: demo10_1.plg
        [Dir]:  proc
        [File]: sqlnet.log
[Dir]:  demo10_2
        [Dir]:  Debug
                [File]: demo10_2.exe
                [File]: demo10_2.obj
                [File]: demo10_2.pdb
                [File]: vc60.pdb
        [File]: demo10_2.c
        [File]: demo10_2.dsp
        [File]: demo10_2.dsw
        [File]: demo10_2.ncb
        [File]: demo10_2.opt
        [File]: demo10_2.pc
        [File]: demo10_2.plg
        [Dir]:  proc
[Dir]:  demo2
        [Dir]:  Debug
                [File]: demo2.exe
                [File]: demo2.obj
                [File]: demo2.pdb
                [File]: demo2.sbr
                [File]: vc60.pdb
        [File]: demo2.c
        [File]: demo2.dsp
        [File]: demo2.dsw
        [File]: demo2.ncb
        [File]: demo2.opt
        [File]: demo2.pc
        [File]: demo2.plg
        [Dir]:  proc
        [File]: sqlnet.log
[Dir]:  demo6_2
        [Dir]:  Debug
                [File]: demo6_2.exe
                [File]: demo6_2.pdb
                [File]: m.obj
                [File]: vc60.pdb
        [File]: demo6_2.dsp
        [File]: demo6_2.dsw
        [File]: demo6_2.ncb
        [File]: demo6_2.opt
        [File]: demo6_2.plg
        [File]: m.c
        [File]: m.pc
        [Dir]:  proc
[File]: pre_20111015.log
请按任意键继续. . .

阅读更多
个人分类: C
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页

关闭
关闭
关闭