Иллюстрированный самоучитель по C++ Builder

Очистка диска

Основную работу (удаление файлов) выполняет рекурсивная функция clear (рекурсивной называют функцию, которая в процессе работы вызывает сама себя). Решение реализовать функцию clear как рекурсивную не случайно: функция обрабатывает каталоги компьютера, которые являются рекурсивными объектами. Рекурсивным называют объект, частично состоящий из объектов этого же типа.

Алгоритм функции clear приведен на рис. 10.23.

Иллюстрированный самоучитель по C++ Builder › Примеры программ › Очистка диска
Рис. 10.23. Алгоритм функции Clear

Сначала функция clear обрабатывает текущий каталог: просматривает все файлы и удаляет те, которые надо удалить. Просмотр файлов обеспечивают функции FindFirst и FindNext. Функция FindFirst просматривает каталог, указанный при ее вызове, и записывает в структуру searchRec имя первого из найденных файлов, имя которого соответствует маске. В данной программе маска *.*, т. е. функция выбирает первый по порядку файл. Если файл найден, то выполняется проверка его расширения. Если расширение файла .obj, .tds или начинается со значка ~, то имя файла добавляется в поле Memo1, а сам файл удаляется с диска. Удаляет файл функция DeleteFiie. После обработки первого файла для поиска следующего вызывается функция FindNext.

После того как все файлы текущего каталога будут обработаны, функция clear проверяет, есть ли в текущем каталоге подкаталоги. Проверку выполняет функция FindFirst, которой в качестве параметра передается константа faDirectory, информирующая функцию о том, что надо искать имена каталогов, а не файлов. Если в текущем каталоге нет подкаталогов, то функция clear завершает работу. Если в текущем каталоге есть подкаталоги, то выполняется вход в подкаталог (делает это функция choir) и вызов функции clear (для обработки подкаталога функция вызывает саму себя). Если в текущем каталоге нет необработанных каталогов, то она завершает работу и возвращает управление функции clear, которая ее вызвала и которая после этого продолжает обработку "своих" подкаталогов.

Вывод окна Обзор папок выполняет функция selectDirectory, которую вызывает функция обработки события click на кнопке Каталог. Для доступа к этой функции в текст программы надо включить директиву #include <FileCTRL.hpp>.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.