#include <io.h>
#include <iostream>
#include <string>
#include <windows.h>
#include <direct.h>
using namespace std;
string sRoot = "G:"; //根目录
string sSuffix = "\\DesignModal"; //中间路径
string sEnd = "\\"; //路径末尾追加的部分
void Move(string sPath);
int main(void)
{
string sPath = sRoot + sSuffix; //sPath="G:\\DesignModal"
Move(sPath);
system("pasue");
return 0;
}
void Move( string sPath)
{
struct _finddata_t file;
memset(&file, 0, sizeof(file)); //初始化结构
long hFile;
string sPathLast = sPath; //sPathLast="G:\\DesignModal"
if (_chdir(sPathLast.c_str()) != 0) //_chdir函数设置当前目录
{
cerr << "当前目录设置失败!" << endl;
exit(-1);
}
hFile = _findfirst("*",&file); //参数1:char *类型,"*"表示通配符,可以查找文件、文件夹
if(hFile == -1)
{
cout << " 遍历失败!" << endl;
return ;
}
do
{
if(file.name[0] == '.') //过滤本级目录和父目录 此处就是“程序例2”中的病根所在
continue;
if(file.attrib == _A_SUBDIR) //子文件夹
{
string sAddPath = sPath;
sAddPath += "\\";
sAddPath += file.name;
cout << "目录:" << sAddPath << endl;
Move(sAddPath); //递归遍历
}
else
{
string sAddPath = sPath;
sAddPath += "\\";
sAddPath += file.name;
cout << "文件:" << sAddPath << endl;
}
}while(_findnext(hFile,&file) == 0); //没有找到文件或文件夹
_findclose(hFile); //一定记得关闭文件句柄
}