Срочно!!! посмотрите плиз код - Recursive Deleting Folders
есть две функции:
// удаление списка папок.
int DeleteFolders(CString strPathDir)
{
// getting a list of a folders
std::vector<CString> vector;
std::vector<CString>::iterator it;
vector = GetFoldersToDel(strPathDir);
for(it=vector.begin(); it!=vector.end();++it)
if (!RemoveDirectory(*it)) {
// send error message
return 0;
}
return 1;
}
// составление списка на удаление
TCSVector GetFoldersToDel(CString strPathDir)
{
HANDLE hFile;
CString str;
CString strFileName;
CString strPathFile;
std::vector<CString> vector,tvector;
std::vector<CString>::iterator it;
WIN32_FIND_DATA FindFileData;
//Find First Folder
str = strPathDir;
strPathFile = strPathDir;
str+="\\*";
hFile = FindFirstFile(str.GetBuffer(str.GetLength()),&FindFileData);
if (hFile==INVALID_HANDLE_VALUE) {
FindClose(hFile);
return vector;
}
do {
strFileName = FindFileData.cFileName;
if (!strcmp(FindFileData.cFileName,"."))continue;
else if (!strcmp(FindFileData.cFileName,".."))continue;
else {
strPathFile = strPathDir;
strPathFile += "\\";
strPathFile += strFileName;
if (CheckDirectoryExist(strPathFile.GetBuffer(strPathFile.GetLength()))) {
tvector = GetFoldersToDel(strPathFile.GetBuffer(strPathFile.GetLength()));
for (it = tvector.begin(); it != tvector.end(); ++it)
vector.push_back(*it);
vector.push_back(strPathFile.GetBuffer(strPathFile.GetLength()));
}
}
} while(FindNextFile(hFile,&FindFileData));
FindClose(hFile);
return vector;
}
суть вопроса в том, что список-то составляется.. только на этапе удаления RemoveDirectory() завершается с ошибкой 32 - The process cannot access the file because it is being used by another process.
Вопрос: что я сделал не так или почему нет доступа к файлам.. ведь дело в коде - а я все же закрываю HANDLE hFile: FindClose(hFile);
???
Цитата:
Originally posted by dies
.. предварительно папки очищены от содержания, в смысле от файлов (просто так нужно было сделать Ж))
.. предварительно папки очищены от содержания, в смысле от файлов (просто так нужно было сделать Ж))
Посмотри код во вложенном файле. там принцип удаления.