Поделиться через


Функция DeleteFileA (fileapi.h)

Удаляет существующий файл.

Чтобы выполнить эту операцию как транзакцию, используйте функцию DeleteFileTransacted .

Синтаксис

BOOL DeleteFileA(
  [in] LPCSTR lpFileName
);

Параметры

[in] lpFileName

Имя файла, предназначенного для удаления.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.

Совет

Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция завершается сбоем, возвращаемое значение равно нулю (0). Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если приложение пытается удалить файл, который не существует, функция DeleteFile завершается сбоем с ERROR_FILE_NOT_FOUND. Если файл доступен только для чтения, функция завершается сбоем с ERROR_ACCESS_DENIED.

В следующем списке приведены советы по удалению, удалению или закрытию файлов.

  • Чтобы удалить файл, доступный только для чтения, сначала необходимо удалить атрибут только для чтения.
  • Чтобы удалить или переименовать файл, необходимо иметь разрешение на удаление файла или разрешение на удаление дочернего элемента в родительском каталоге.
  • Чтобы рекурсивно удалить файлы в каталоге, используйте функцию SHFileOperation .
  • Чтобы удалить пустой каталог, используйте функцию RemoveDirectory .
  • Чтобы закрыть открытый файл, используйте функцию CloseHandle .

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

Если вы запрашиваете разрешение на удаление во время создания файла, вы можете удалить или переименовать файл с помощью этого дескриптора, но не с другим дескриптором. Дополнительные сведения см. в разделе Безопасность файлов и права доступа.

Функция DeleteFile завершается сбоем, если приложение пытается удалить файл с другими дескрипторами, открытыми для обычного ввода-вывода или как файл, сопоставленный в памяти (FILE_SHARE_DELETE должны быть указаны при открытии других дескрипторов).

Функция DeleteFile помечает файл для удаления при закрытии. Таким образом, удаление файла не выполняется до закрытия последнего дескриптора файла. Последующие вызовы CreateFile для открытия файла завершаются сбоем с ERROR_ACCESS_DENIED.

При использовании функции удаления POSIX файл удаляется, пока дескриптор остается открытым. Последующие вызовы CreateFile для открытия файла завершаются сбоем с ERROR_FILE_NOT_FOUND.

Поведение символьной ссылки:

Если путь указывает на символьную ссылку, символьная ссылка удаляется, а не целевой объект. Чтобы удалить целевой объект, необходимо вызвать CreateFile и указать FILE_FLAG_DELETE_ON_CLOSE.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями:

Технология Поддерживается
Протокол SMB 3.0 Да
Прозрачная отработка отказа (TFO) SMB 3.0 Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (ReFS) Да

Примеры

Пример см. в разделе Блокировка и разблокировка диапазонов байтов в файлах.

Примечание

Заголовок fileapi.h определяет DeleteFile как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header fileapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CloseHandle

CreateFile

DeleteFileTransacted

Функции управления файлами

Символические ссылки