关于文件夹的拷贝问题
小弟正在作一个文件夹的复制的程序,复制函数写好了,现在就差文件夹中的所有文件的显示问题,我想到了用递归求解,就是写一个判断函数,判断一个目标是文件还是文件夹,如果是文件就返回文件名路径,如果是文件就递归调用这个判断函数继续判断,直到下面没有东西了位置,不知道这种想法对不对,如果对的话我想请问一下1:C++里面判断是文件夹还是文件的函数是什么?
2:我如何写递归的条件,就是如果确定下面没有东西了?
3:是不是要用到二叉树的遍历算法,还是只用递归就可以搞定?
谢谢!!!!!!!!!!!!
[解决办法]
BOOL SearchDir(char* path)
{
WIN32_FIND_DATA FindData;//查找文件必须的变量
HANDLE hFile;
char temp[MAX_PATH] = path;
strcat(temp, "\\*.* ")
hFile = FindFirstFile(temp, &FindData);
if(hFile != INVALID_HANDLE_VALUE)
{
do{
if(!strcmp(FindData.cFileName, ". ")|| !strcmp(FindData.cFileName, ".. "))
continue;
if(FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY )//文件夹属性
{
//递归调用
strcpy(temp,path);
strcat(temp, "\\ ");
strcat(temp,FindData.cFileName);
SearchDir(temp);
}
else
{
//文件名在FindData.cFileName中,你可以自己的要求操作如何输出
}
}while(FindNextFile(hFile,&FindData));
FindClose(hFile);
return true;
}
else
return false;
}
只用递归应该就可以了,如果下面没有东西了,SearchDir()会自动从最里层退出来的。
[解决办法]
if(!strcmp(FindData.cFileName, ". ")|| !strcmp(FindData.cFileName, ".. "))
呵呵 最后一个)用了中文输入法,你切换到英文输入法下改一下,应该就可以了 。
也就是改成:
if(!strcmp(FindData.cFileName, ". ")|| !strcmp(FindData.cFileName