AVZ 5. Руководство пользователя
×

16.35.21. function DeleteFileMask

function DeleteFileMask(ADir, AMask : string; ARecurse : boolean; ASDFormula : string := '') : boolean;
 
Выполняет поиск и удаление файлов в папке ADir, имена которых соответствуют маскам AMask.
Параметр ARecurse управляет отработкой вложенных каталогов - если ARecurse = true, то будет выполнен рекурсивный обход папок начиная от заданной и в каждой из папок будет выполнен поиск и удаление файлов по маске AMask. Если ARecurse = false, то поиск и удаление файлов производится только в заданной папке, вложенные подкаталоги не обрабатываются.
 
Важно отметить, что данная функция удаляет объекты внутри каталога ADir, однако сам каталог ADir не удаляется. Если необходимо удаление каталога, следует дополнительно использовать функцию DeleteDirectory. Вложенные каталоги функция удаляет, но при условии, что они пустые (соответственно, попытка удаления каталогов делается после удаления файлов).
 
В параметре AMask можно указать одну или несколько масок. В случае задания нескольких масок они разделяются пробелами, запятыми или точкой с запятой. Т.е. данный варианты задания маски являются эквивалентными:
*.exe;*.dll;*.com
*.exe,*.dll,*.com
*.exe *.dll *.com
 
В имени папки ADir допустимо указывать макросы, подробнее см. в разделе "макросы, допустимые в именах файлов"
 
Параметр ASDFormula задает алгоритм необратимого удаления файла. По умолчанию алгоритм не задан и производится обычное удаление файла. В случае, если алгоритм задан, то выполняется необратимое удаление всех попадающих под маску файлов путем вызова DeleteFileSecure для каждого удаляемого файла. Важно отметить, что необратимое удаление может идти на порядки медленнее обычного - скорость необратимого удаления зависит от заданного алгоритма.
 
На заметку:
Данная функция опасна и может серьезно повредить системе в случае задания некорректных параметров. Поэтому перед применением функции рекомендуется тщательно проверить ее аргументы.
На заметку:
Несмотря на то, что в параметре ADir поддерживаются макросы, их следует использовать с особой осторожностью. Риск состоит в том, что используемая в макросе переменная окружения может быть установлена некорректно.
 
Совместимость: AVZ 4.28 и выше; параметр ASDFormula появился начиная с версии 4.32 (при этом параметр содержит значение по умолчанию и сохраняется полная совместимость с версией 4.28)
 
Примеры:
 
begin
  // Очистка папки
  DeleteFileMask('c:\TestDir', '*.*', true);
end.
 
begin
  // Очистка папки и ее последующее удаление
  DeleteFileMask('c:\TestDir', '*.*', true);
  DeleteDirectory('c:\TestDir');
end.
В данном примере в случае успешного удаления всех файлов и вложенных каталогов функцией DeleteFileMask произойдет удаление каталога. В противном случае DeleteDirectory не сможет удалить каталог.  
 
begin
  // Очистка папки - необратимое удаление файлов
  DeleteFileMask('c:\TestDir', '*.*', true, '01RX');
end.
 
 В данном примере при удалении файлов применяется "формула" удаления '01RX', в результате содержимое файла будет затерто в три прохода, байтами 0x00, 0xFF и случайными байтами, после чего файл будет удален