Функция DeleteFile (winbase.h)
Удаляет существующий файл.
Чтобы выполнить эту операцию как транзакцию, используйте функцию DeleteFileTransacted .
Синтаксис
BOOL DeleteFile(
[in] LPCTSTR 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 .
Если вы запрашиваете разрешение на удаление во время создания файла, вы можете удалить или переименовать файл с помощью этого дескриптора, но не с другим дескриптором. Дополнительные сведения см. в разделе Безопасность файлов и права доступа.
Функция DeleteFile завершается сбоем, если приложение пытается удалить файл с другими дескрипторами, открытыми для обычного ввода-вывода или как файл, сопоставленный в памяти (FILE_SHARE_DELETE должны быть указаны при открытии других дескрипторов).
Функция DeleteFile помечает файл для удаления при закрытии. Таким образом, удаление файла не выполняется до закрытия последнего дескриптора файла. Последующие вызовы CreateFile для открытия файла завершаются сбоем с ERROR_ACCESS_DENIED.
Поведение символических ссылок—
Если путь указывает на символьную ссылку, символьная ссылка удаляется, а не целевой объект. Чтобы удалить целевой объект, необходимо вызвать CreateFile и указать FILE_FLAG_DELETE_ON_CLOSE.
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
Прозрачная отработка отказа (TFO) SMB 3.0 | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
Примеры
Пример см. в разделе Блокировка и разблокировка диапазонов байтов в файлах.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |