代码void FindFireDelete(HWND hwnd,LPSTR lpstr)
{
TCHAR Select[256],Decision[256];//Select 是搜索的,Decision是找到的文件名+路径
ZeroMemory(Select,sizeof(Select)/sizeof(TCHAR));
lstrcat(Select,lpstr);
lstrcat(Select,TEXT("*.*"));
WIN32_FIND_DATA wdate;
HANDLE hdl=FindFirstFile(Select,&wdate);
while(hdl)
{
ZeroMemory(Decision,sizeof(Decision)/sizeof(TCHAR));
wsprintf(Decision,TEXT("%s\\%s"),lpstr,wdate.cFileName);
if(FILE_ATTRIBUTE_DIRECTORY==GetFileAttributes(Decision))
{
MessageBox(hwnd,Decision,TEXT("是文件夹"),0);
//lstrcat(Decision,TEXT("\\")); 按理说这里要加的吧?但是加了就一直弹出。不加就怎么都找不到
FindFireDelete(hwnd,Decision);
}
BOOL a=FindNextFile(hdl,&wdate);
if(!a)
{
goto err;
}
}
err:
FindClose(hdl);
}然后我调用这样调的TCHAR buff[100]=TEXT("E:");
FindFireDelete(hwnd,buff);第二级目录怎么也找不到,请大家帮忙看看错哪儿了
{
TCHAR Select[256],Decision[256];//Select 是搜索的,Decision是找到的文件名+路径
ZeroMemory(Select,sizeof(Select)/sizeof(TCHAR));
lstrcat(Select,lpstr);
lstrcat(Select,TEXT("*.*"));
WIN32_FIND_DATA wdate;
HANDLE hdl=FindFirstFile(Select,&wdate);
while(hdl)
{
ZeroMemory(Decision,sizeof(Decision)/sizeof(TCHAR));
wsprintf(Decision,TEXT("%s\\%s"),lpstr,wdate.cFileName);
if(FILE_ATTRIBUTE_DIRECTORY==GetFileAttributes(Decision))
{
MessageBox(hwnd,Decision,TEXT("是文件夹"),0);
//lstrcat(Decision,TEXT("\\")); 按理说这里要加的吧?但是加了就一直弹出。不加就怎么都找不到
FindFireDelete(hwnd,Decision);
}
BOOL a=FindNextFile(hdl,&wdate);
if(!a)
{
goto err;
}
}
err:
FindClose(hdl);
}然后我调用这样调的TCHAR buff[100]=TEXT("E:");
FindFireDelete(hwnd,buff);第二级目录怎么也找不到,请大家帮忙看看错哪儿了
void CMyDlg::EnumFile(CString path)
{
HANDLE hFirstFile = NULL;
WIN32_FIND_DATA FindData;
if(path[path.GetLength()-1]!='\\')
{
path+="\\";
}
hFirstFile = FindFirstFile( path+"*.*",&FindData );
if(hFirstFile==INVALID_HANDLE_VALUE )
return ;
while(TRUE)
{
CString str;
str=FindData.cFileName;
if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindData.cFileName[0]!='.')
{
EnumFile(path+FindData.cFileName);
}
}
else
{
vfilepath.push_back(path+str);
str.Delete(str.Find(".url"),4);
vfile.push_back(str);
}
if(!FindNextFile(hFirstFile,&FindData))
break;
}
}
我在E:\目录下搜索文件夹没问题,但是在例如E:\11\下搜索会多出两个结果 . 和 ..
比如E:\11下只有 12 这个文件夹 但是会搜索到 E:\11\. E:\11\.. E:\11\12
莫名其妙啊