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


Функция 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 Да
Отработка отказа SMB 3.0 (TFO) Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Отказоустойчивая файловая система (ReFS) Да

Примеры

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

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка fileapi.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

CloseHandle

CreateFile

DeleteFileTransacted

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

символьные ссылки