Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menghapus file yang ada. Fungsi ini akan gagal jika ada bagian dari lpFileName yang dialihkan melalui titik pemisahan ulang atau tautan simbolis.
Untuk melakukan operasi ini sebagai operasi yang ditransaksikan, gunakan fungsi DeleteFileTransacted .
Sintaksis
BOOL DeleteFile2A(
LPCSTR lpFileName,
DWORD Flags
);
Parameter-parameternya
lpFileName
Nama file yang akan dihapus.
Secara default, nama dibatasi untuk MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan awal "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Menamai File, Jalur, dan Namespace.
Petunjuk / Saran
Anda dapat ikut serta untuk menghapus batasan MAX_PATH tanpa menambahkan sebelumnya "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" dari Penamaan File, Jalur, dan Namespace untuk detailnya.
Flags
Bendera untuk menentukan cara memperlakukan file yang sedang dihapus. Parameter ini dapat berupa kombinasi salah satu nilai berikut:
| Nilai | Makna |
|---|---|
FILE_FLAG_DISALLOW_PATH_REDIRECTS0x00010000 |
Cegah lpFileName dialihkan oleh titik pemisahan ulang atau tautan simbolis. |
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol (0). Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError. Kemungkinan kesalahan termasuk yang berikut ini:
| Mengembalikan kode | Deskripsi |
|---|---|
| ERROR_PATH_REDIRECTED | lpFileName dialihkan oleh titik pemisahan ulang dan/atau tautan simbolis. |
Komentar
Jika aplikasi mencoba menghapus file yang tidak ada, fungsi DeleteFile2 gagal dengan ERROR_FILE_NOT_FOUND. Jika file adalah file baca-saja, fungsi gagal dengan ERROR_ACCESS_DENIED.
Daftar berikut mengidentifikasi beberapa tips untuk menghapus, menghapus, atau menutup file:
- Untuk menghapus file baca-saja, pertama-tama Anda harus menghapus atribut baca-saja.
- Untuk menghapus atau mengganti nama file, Anda harus memiliki izin penghapusan pada file, atau menghapus izin turunan di direktori induk.
- Untuk menghapus file secara rekursif dalam direktori, gunakan fungsi SHFileOperation .
- Untuk menghapus direktori kosong, gunakan fungsi RemoveDirectory .
- Untuk menutup file yang terbuka, gunakan fungsi CloseHandle .
Jika Anda menyiapkan direktori dengan semua akses kecuali menghapus dan menghapus anak, dan daftar kontrol akses (ACL) file baru diwariskan, maka Anda dapat membuat file tanpa dapat menghapusnya. Namun, kemudian Anda dapat membuat file, lalu mendapatkan semua akses yang Anda minta pada handel yang dikembalikan kepada Anda pada saat Anda membuat file.
Jika Anda meminta izin penghapusan pada saat membuat file, Anda dapat menghapus atau mengganti nama file dengan handel tersebut, tetapi tidak dengan handel lainnya. Untuk informasi selengkapnya, lihat Keamanan File dan Hak Akses.
Fungsi DeleteFile2 gagal jika aplikasi mencoba menghapus file yang memiliki handel lain yang terbuka untuk I/O normal atau sebagai file yang dipetakan memori (FILE_SHARE_DELETE harus ditentukan ketika handel lain dibuka).
Fungsi DeleteFile2 menandai file untuk dihapus saat ditutup. Oleh karena itu, penghapusan file tidak terjadi sampai handel terakhir ke file ditutup. Panggilan berikutnya ke CreateFile, CreateFile2, atau CreateFile3 untuk membuka file gagal dengan ERROR_ACCESS_DENIED.
Penggunaan penghapusan POSIX menyebabkan file dihapus saat handel tetap terbuka. Panggilan berikutnya ke CreateFile untuk membuka file gagal dengan ERROR_FILE_NOT_FOUND.
Perilaku tautan simbolis
Jika jalur menunjuk ke tautan simbolis, tautan simbolis dihapus, bukan target. Untuk menghapus target, Anda harus memanggil CreateFile dan menentukan FILE_FLAG_DELETE_ON_CLOSE.
Fungsi ini didukung oleh teknologi berikut:
| Teknologi | Didukung |
|---|---|
| Protokol Server Message Block (SMB) 3.0 | Ya |
| Failover Transparan (TFO) SMB 3.0 | Ya |
| SMB 3.0 dengan Scale-out File Shares (SO) | Ya |
| Sistem File Volume Bersama Kluster (CsvFS) | Ya |
| Sistem File Tangguh (ReFS) | Ya |
Nota
Header fileapi.h mendefinisikan DeleteFile2 sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Contoh
Misalnya, lihat Mengunci dan Membuka Kunci Rentang Byte di File.
Persyaratan
| Persyaratan | Nilai |
|---|---|
| klien minimum yang didukung | Windows 11 24H2 [aplikasi desktop | Aplikasi UWP] |
| server minimum yang didukung | Windows Server 2025 [aplikasi desktop | Aplikasi UWP] |
| Tajuk | fileapi.h (termasuk Windows.h) |
| Perpustakaan | Kernel32.lib |
| DLL | Kernel32.dll |