Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Удалить файлы в директории


Автор: antoshka1303 21.6.2008, 19:16
 Как можно удалить все файлы в директории? Заранее спасибо всем!! 

Автор: Rififi 21.6.2008, 20:05
antoshka1303, 
перебором всех файлов в этой директории и unlink каждому
чуть гореморойнее и с завязкой на winapi - SHFileOperation

Автор: Dmi3ev 22.6.2008, 13:59
я бы посоветовал FindFirst и FindNext использовать для поиска файлов, а еще Delete, я дома посмотрю, я в свое время писал Cleaner для себя, найду, скину исходники  smile а исходники точно где-то были, я им пользуюсь.

Автор: jonie 22.6.2008, 18:02
Код

WIN32_FIND_DATA fd;
ZeroMemory(&fd, sizeof(fd)); 
HANDLE h = FindFirstFile(m_folder+TEXT("*.*"), &fd);
if(INVALID_HANDLE_VALUE!=h)
{
  do {
    if(FILE_ATTRIBUTE_DIRECTORY&fd.dwFileAttributes)  continue;
    if(FILE_ATTRIBUTE_READONLY&fd.dwFileAttributes){
       SetFileAttributes(m_folder+fd.cFileName, FILE_ATTRIBUTE_NORMAL);
    }
    DeleteFile(fd.cFileName);
  }while (FindNextFile(h,&fd));
FindClose(h); 
}

писал прямо тут, так что могут быть незначительные ошибки.. но с виду все ок...

Автор: Dmi3ev 22.6.2008, 18:59
я не нашел исходников своего cleaner-а,  ну да ладно, вот так:
Код

TSearchRec sr;
AnsiString dir="D:\\Директория";
ChDir(dir);
if (FindFirst("*.*", faArchive, sr)==0)
do
 {
  DeleteFile(sr.Name);
 }
while (FindNext(sr)==0);

Автор: Palladin 22.6.2008, 22:34
Код

SHFILEOPSTRUCT
sh;
sh.hwnd = GetSafeHwnd();
sh.wFunc = FO_DELETE;
sh.pFrom = "c:\\test\0";
sh.pTo = NULL;
sh.fFlags = FOF_NOCONFIRMATION |
FOF_SILENT;
sh.hNameMappings = 0;
sh.lpszProgressTitle = NULL;
SHFileOperation (&sh);


Этот код удалит всё дерево каталогов, начиная с "c:\ test" и включая его.

P.S. C++ World рулит smile 

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