File.Delete

File.Delete ( string Source,
boolean Recurse = false,
boolean AbortOnFail = false,
boolean IncludeHiddenFiles = true,
function CallbackFunction = nil )
Примеры

Описание

Удаление файла.

Параметры

Source

(строка) Путь к файлу, который нужно удалить. Для удаления нескольких файлов в этом поле можно использовать подстановочные знаки * и ?.

Recurse

(логический) Делать ли рекурсию вложенных папок при использовании подстановочных знаков в параметре Source:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueРекурсия. (по умолчанию)
falseНе делать рекурсию.

AbortOnFail

(логический) Прерывать ли операцию удаления при возникновении ошибки:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueОстановка удаления при возникновении первой же ошибки.
falseПродолжать удаление файлов, даже если несколько файлов не могут быть удалены. (По умолчанию)

IncludeHiddenFiles

(логический) Удалять ли файлы, которые имеют установленные атрибуты "скрытый" или "системный":

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueУдалять файлы с установленными атрибутами "скрытый" или "системный".
falseНе удалять файлы с установленными атрибутами "скрытый" или "системный". (Default)

CallbackFunction

(функция) Имя функции, которая будет вызываться всякий раз, при прохождении операции удаления. (Можно использовать эту возвращающуюся функцию для отображения прохождения процесса удаления, своим собственным способом.)

Примечание: Если в CallbackFunction установлено значение nil, тогда информация о протекании процесса будет отправлена во встроенное диалоговое окно состояния, предполагая что оно в настоящий момент видимое. (Можно показать или скрыть диалоговое окно состояния действиями StatusDlg.Show или StatusDlg.Hide соответственно.)

Возвращающаяся функция должна иметь возможность принять следующие параметры:

Source

(строка) Путь к источнику удаляемого файла.

Deleted

(число) Количество байтов, удаленных на настоящий момент.

Total

(число) Общее количество байтов, которые будут удалены. Возвращающая функция должна возвращать логическое значение (истина (true) или ложь (false)), показывающее следует ли продолжать операцию удаления:

ЗНАЧЕНИЕ
VALUE
ОПИСАНИЕ
DESCRIPTION
trueПродолжать операцию удаления.
falseОстановить операцию удаления при первой же возможности.

Возврат

Ничего. Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
Смотрите также: Связанные действия

Примеры

Пример 1

File.Delete("AutoPlay\\Docs\\*.txt");
Удаляем все текстовые файлы в папке "AutoPlay\Docs" и не заходим в любые вложенные папки внутри "AutoPlay\Docs", для поиска файлов, оканчивающихся на .txt.

Пример 2

File.Delete(_TempFolder .. "\\install.log", false, false, true, CB_Delete);
Удаляем файл по имени "install.log" из временной папки пользователя. Действие не делает рекурсию вложенных папок, не прерывает операцию удаления при ошибке, и удаляет файлы с установленными атрибутами "скрытый" или "системный". Функция по имени CB_Delete будет вызываться всякий раз, когда происходит операция удаления(т.е. каждый раз при удалении n-ного количества байтов).

Пример 3

-- Gets the path to the user's My Documents folder.
-- Получаем путь к папке пользователя Мои документы.
my_docs_path = Shell.GetFolder(SHF_MYDOCUMENTS);

-- Check to see if the My Documents folder detection was successful.
-- Смотрим, было ли успешным обнаружение папки Мои документы.
if (Application.GetLastError() == 0)then

    -- Search the user's My Documents folder for the file "Data.ini".
    -- Поиск в папке пользователя Мои документы файл "Data.ini".
    search_results = File.Find(my_docs_path, "Data.ini", true, false, nil);

    -- Check to see if an error occurred during the search. If it did, display the error message.
    -- Проверяем, не было ли ошибки при поиске. Если была ошибка, показываем сообщение об ошибке.
    error = Application.GetLastError();
    if error ~= 0 then
        Dialog.Message("Error", _tblErrorMessages[error]);
    else

        -- If no files were found, notify the user.
        -- Если файлы не были найдены, извещаем пользователя.
        if (search_results == nil) then
            Dialog.Message("Notice", "Data.ini was not found in your My Documents folder.");

        -- If files were found, display a dialog containing a list of their locations.
        -- Also ask for deletion confirmation.
        -- Если файлы были найдены, показываем диалоговое окно сообщения со списком их размещения.
        -- Также запрашиваем подтверждение удаления.
        else
            message = "Data.ini was found in the following location(s). Click OK to delete the file(s):\r\n\r\n";
            for index, path in pairs(search_results) do
                message = String.Concat(message, path .. "\r\n");
            end
            proceed = Dialog.Message("File Search Results", message, MB_OKCANCEL, MB_ICONQUESTION, MB_DEFBUTTON1);

            -- If the user clicked OK, delete all of the files found.
            -- Если пользователь кликнул OK, удаляем все найденные файлы.
            if proceed == IDOK then

                -- Delete each file found in the search.
                -- Удаляем каждый файл найденный при поиске.
                for index, path in pairs(search_results) do
                    File.Delete(path, false, false, false, nil);

                    -- Check to see if any errors occurred during the deletion.
                    -- Смотрим, не произошло ли ошибки при выполнении удаления.
                    if (Application.GetLastError() ~= 0) then
                        Dialog.Message("Error", "The file located at: " .. path .. " could not be deleted.");
                    end
                end
            end
        end
    end
end
В этом примере используется действие File.Find для поиска всех копий указанного INI файла в папке пользователя Мои документы. Если файл был найден более чем в одном расположении, пользователю представляется список и спрашиваем, нужно ли удалить их. Если пользователь согласен, каждая копия файла удаляется при помощи действия File.Delete.
Смотрите также: Связанные действия