| Код | bool CDeletDlg::_search(char *buff, char *cFile) { WIN32_FIND_DATA wfdFile_Data; HANDLE hSearch; char cURL[256]; //для пути int iSize; //для расчета возврата iSize = strlen(buff); strcpy(cURL, buff); strcat(cURL, cFile); if( (hSearch = FindFirstFile(cURL, &wfdFile_Data)) != INVALID_HANDLE_VALUE){ //первый поиск if( strcmp(wfdFile_Data.cFileName, ".")!=0 && strcmp(wfdFile_Data.cFileName, "..")!=0 )//пропускаем текущую и прошедшую if(!(wfdFile_Data.dwFileAttributes & 0x00000010)){//если папка //удаление файла *(cURL+iSize) = NULL; //ограничитель по каталогу.. strcat(cURL, wfdFile_Data.cFileName); if(!DeleteFile(cURL)) return 1; } else{ strcat(buff, wfdFile_Data.cFileName); strcat(buff,"\\"); if(_search(buff, cFile)) //рекурсивный поиск return 1; if(!RemoveDirectory(buff)) //удаление папки после ее обработки m_ListBox1.AddString(buff);
buff[iSize] = NULL; //вернемся назад } while(FindNextFile(hSearch, &wfdFile_Data)){ //поиск последующих файлов if( strcmp(wfdFile_Data.cFileName, ".")!=0 && strcmp(wfdFile_Data.cFileName, "..")!=0 ) if(!(wfdFile_Data.dwFileAttributes & 0x00000010)){ //удаление файла *(cURL+iSize) = NULL; //ограничитель по каталогу.. strcat(cURL, wfdFile_Data.cFileName); if(!DeleteFile(cURL)) return 1; } else{ strcat(buff, wfdFile_Data.cFileName); strcat(buff,"\\"); if(_search(buff, cFile)) //рекурсивный поиск return 1; if(!RemoveDirectory(buff)) //удаление папки после ее обработки m_ListBox1.AddString(buff);
buff[iSize] = NULL; //вернемся назад
} } }
FindClose(hSearch);//бай-бай... return 0; } |
типа ищи все эти функции в Api программа рекурсивно удаляет папки...
А так.. получить через FindFirstFile содержащая атрибут структуры WIN32_FIND_DATA у него ессть атрибут определяющий.. это каталог, файл..
Ищи книгу Работа с файлами. Win Api. |