Удаление всех файлов из папки
2) Удали папку
3) Создай папку с запомненным именем заново
почему, когда я ищу файлы *.* сначала находятся "." и ".."?
2) Удали папку
3) Создай папку с запомненным именем заново
мммм. а можна пример? в смысле работающий код? Потому как SHFileOperation обычно для этого юзается - но в таком случае никакой необходимости удалять папку нет, а вот удаление папки с файлами... или это было просто лишь бы сказать?
почему, когда я ищу файлы *.* сначала находятся "." и ".."?
потому что ты ищешь все объекты. Добавь в код поиска проверку на директорию и получай только файлы
будет примерно след код
system("c:");
system("cd \");
system("cd windows");
system("cd temp");
system("del *.* /f /s /q");
почему, когда я ищу файлы *.* сначала находятся "." и ".."?
потому-что FindFirstFile/FindNextFile проходят по таблице фат. а для каждой под-папки там 2 первіе записи - это "." и "..". Первая запись нужна для верификации содержимого подпапки с ее записью в паке на уровень выше. То-есть грубо говоря она указывает сама на себя. Вторая запись - указывает на родительский элемент.
Я не думал, что RemoveDir и RemoveDirectory работают только с пустыми папками.:confused: Так что извиняйте. Оказалось не все так просто.
В принципе согласен с Death Knight насчет использования коммандной строки.
Только поправочка:
system( "cd c:\windows" );
system( "rmdir /s/q Temp" );
system( "mkdir Temp" );
..
Это позволит удалить также все вложенные каталоги. Иначе будут удалены только все файлы во вложенных каталогах, но не сами каталоги!
Получается:
1) Запоминаем имя папки(если можно так сказать)
2) Удаляем ее
3) Создаем заново
В принципе согласен с Death Knight насчет использования коммандной строки.
Только поправочка:
system( "cd c:\windows" );
system( "rmdir /s/q Temp" );
system( "mkdir Temp" );
..
Это позволит удалить также все вложенные каталоги. Иначе будут удалены только все файлы во вложенных каталогах, но не сами каталоги!
Получается:
1) Запоминаем имя папки(если можно так сказать)
2) Удаляем ее
3) Создаем заново
Ну так в принципе верно. Но чем не подходит:
ZeroMemory(&sh, sizeof(SHFILEOPSTRUCT));
sh.pFrom = "c:\\test1\\*.*\0";
sh.fFlags = FOF_FILESONLY|FOF_NOCONFIRMATION;
sh.wFunc = FO_DELETE;
SHFileOperation(&sh);
использование командной строки - это зачастую потенциально путь к ошибкам и нарушениям политики безопасности