递归列出目录下的所有文件

82 篇文章 0 订阅
#include <iostream>

#include <io.h>
#include <fstream>

#include <string>

using namespace std;

int count=0;//用来表示缩进

void findFile(string dir)
{
	long filehandle;
	_finddata_t fileInfo;


	string dirPattern=dir+"\\*.*";//给定目录下所有形式的文件名
	filehandle=_findfirst(dirPattern.c_str(),&fileInfo);//_findfirst函数的第一个参数必须
	_findnext(filehandle,&fileInfo);//去除.和..,一般列出来的文件中,头两个是.和..


	while(!_findnext(filehandle,&fileInfo))
	{
		if(fileInfo.attrib!=_A_SUBDIR)//如果不是目录
		{
			for(int m=0;m<count;m++) cout<<" ";
			cout<<fileInfo.name<<endl;
		}
		else if(fileInfo.attrib==_A_SUBDIR)//如果是目录
		{
			count=count+4;
			for(int i=0;i<count;i++) cout<<" ";
			cout<<"subdir=========="<<fileInfo.name<<endl;
			
			string tempdir("\\");//用string是因为字符串连接方便,c的要用函数strcat,太麻烦
			string temp(fileInfo.name);
			tempdir+=temp;
			string dir1(dir);
			dir1+=tempdir;
			//dir1+="\\*.*";
			findFile(dir1);

			for(i=0;i<count;i++) cout<<" ";
			cout<<"subdir=========="<<fileInfo.name<<endl;

			count=count-4;
			
			//cout<<"dir1 is :"<<dir1<<endl;
		}
	}


	_findclose(filehandle);
}

int main(int argc, char **argv)
{

//============
	string dir(".");//从当前目录开始
	findFile(dir);

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值