Функция DeleteFileW (fileapi.h)
Удаляет существующий файл.
Чтобы выполнить эту операцию как транзакцию, используйте функцию DeleteFileTransacted .
Синтаксис
BOOL DeleteFileW(
[in] LPCWSTR 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 Transparent Failover (TFO) | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
Примеры
Пример см. в разделе Блокировка и разблокировка диапазонов байтов в файлах.
Примечание
Заголовок fileapi.h
определяет DeleteFile как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | fileapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |