Bagikan melalui


Fungsi DeleteFile2A (fileapi.h)

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_REDIRECTS
0x00010000
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.

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

Lihat juga

CreateDirectory2

CreateFile3

RemoveDirectory2