Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как работать с каталогами???


Автор: Mikel47 18.9.2004, 18:29
Здрасте!
Я никак не могу найти в литре что-нить про то, как работать с каталогами, файлами ну и с дисками.
Мне нужно писать прогу типа проводника, а я не знаю sad.gif( как, к примеру, не выводить скрытые каталоги, или наоборот выводить тока каталоги.
Помогите чем смогете пжалуста. Хотя бы имя класса, который мог бы дать такие возможности.

С уважением Mikel.

Автор: _hunter 18.9.2004, 18:33
имя класса:
findfirst / findnext / GetFileAttributes
+ поиск по форуму ( по этим именам )
smile.gif

Автор: The Thing 18.9.2004, 19:05
Код
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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)