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.
Mencari direktori untuk file atau subdirektori dengan nama yang cocok dengan nama tertentu (atau nama parsial jika kartubebas digunakan).
Untuk menentukan atribut tambahan yang akan digunakan dalam pencarian, gunakan fungsi
Untuk melakukan operasi ini sebagai operasi yang ditransaksikan, gunakan fungsi
Sintaksis
HANDLE FindFirstFileA(
[in] LPCSTR lpFileName,
[out] LPWIN32_FIND_DATAA lpFindFileData
);
Parameter
[in] lpFileName
Direktori atau jalur, dan nama file. Nama file dapat menyertakan karakter kartubebas, misalnya, tanda bintang (*) atau tanda tanya (?).
Parameter ini tidak boleh NULL, string yang tidak valid (misalnya, string kosong atau string yang tidak memiliki karakter null penghentian), atau diakhapi dengan garis miring terbalik berikutnya (\).
Jika string berakhir dengan kartubebas, titik (.), atau nama direktori, pengguna harus memiliki izin akses ke akar dan semua subdirektori di jalur.
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 Penamaan File, Jalur, dan Namespace.
Ujung
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa prepending "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" Penamaan File, Jalur, dan Namespace untuk detailnya.
[out] lpFindFileData
Penunjuk ke struktur WIN32_FIND_DATA yang menerima informasi tentang file atau direktori yang ditemukan.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan adalah handel pencarian yang digunakan dalam panggilan berikutnya ke
Jika fungsi gagal atau gagal menemukan file dari string pencarian di parameter lpFileName, nilai yang dikembalikan INVALID_HANDLE_VALUE dan konten lpFindFileData tidak ditentukan. Untuk mendapatkan informasi kesalahan yang diperluas, panggil fungsi GetLastError
Jika fungsi gagal karena tidak ada file yang cocok yang dapat ditemukan, fungsi GetLastError
Komentar
Fungsi FindFirstFile membuka handel pencarian dan mengembalikan informasi tentang file pertama yang ditemukan sistem file dengan nama yang cocok dengan pola yang ditentukan. Ini mungkin atau mungkin bukan file atau direktori pertama yang muncul di aplikasi daftar direktori (seperti perintah dir) ketika diberi pola string nama file yang sama. Ini karena FindFirstFile tidak mengurutkan hasil pencarian. Untuk informasi tambahan, lihat FindNextFile.
Daftar berikut mengidentifikasi beberapa karakteristik pencarian lainnya:
- Pencarian dilakukan secara ketat pada nama file, bukan pada atribut apa pun seperti tanggal atau jenis file (untuk opsi lain, lihat FindFirstFileEx).
- Pencarian mencakup nama file panjang dan pendek.
- Upaya untuk membuka pencarian dengan garis miring terbalik berikutnya selalu gagal.
- Meneruskan string yang tidak valid,
null , atau string kosong untuk parameter lpFileNamebukan penggunaan fungsi ini yang valid. Hasil dalam hal ini tidak ditentukan.
Ketika handel pencarian tidak lagi diperlukan, tutup dengan menggunakan fungsi FindClose
Seperti yang dinyatakan sebelumnya, Anda tidak dapat menggunakan garis miring terbalik berikutnya (\) di string input lpFileName untuk FindFirstFile, oleh karena itu mungkin tidak jelas cara mencari direktori akar. Jika Anda ingin melihat file atau mendapatkan atribut direktori akar, opsi berikut akan berlaku:
- Untuk memeriksa file di direktori akar, Anda dapat menggunakan "C:\*" dan menelusuri direktori dengan menggunakan FindNextFile.
- Untuk mendapatkan atribut direktori akar, gunakan fungsi GetFileAttributes.
Pada berbagi jaringan, Anda dapat menggunakan lpFileName
Untuk memeriksa direktori yang bukan direktori akar, gunakan jalur ke direktori tersebut, tanpa garis miring terbelakang. Misalnya, argumen "C:\Windows" mengembalikan informasi tentang direktori "C:\Windows", bukan tentang direktori atau file di "C:\Windows". Untuk memeriksa file dan direktori di "C:\Windows", gunakan lpFileName "C:\Windows\*".
Ketahuilah bahwa beberapa utas atau proses lain dapat membuat atau menghapus file dengan nama ini antara waktu Anda mengkueri hasil dan waktu Anda bertindak atas informasi tersebut. Jika ini adalah masalah potensial untuk aplikasi Anda, salah satu solusi yang mungkin adalah menggunakan fungsi
Jika Anda menulis aplikasi 32-bit untuk mencantumkan semua file dalam direktori dan aplikasi dapat dijalankan pada komputer 64-bit, Anda harus memanggil fungsi
Jika jalur menunjuk ke tautan simbolis, buffer WIN32_FIND_DATA berisi informasi tentang tautan simbolis, bukan target.
Di Windows 8 dan Windows Server 2012, 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 |
Contoh
Contoh C++ berikut menunjukkan penggunaan minimal FindFirstFile.
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
void _tmain(int argc, TCHAR *argv[])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
if( argc != 2 )
{
_tprintf(TEXT("Usage: %s [target_file]\n"), argv[0]);
return;
}
_tprintf (TEXT("Target file is %s\n"), argv[1]);
hFind = FindFirstFile(argv[1], &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("FindFirstFile failed (%d)\n", GetLastError());
return;
}
else
{
_tprintf (TEXT("The first file found is %s\n"),
FindFileData.cFileName);
FindClose(hFind);
}
}
Untuk contoh lain, lihat Mencantumkan File di direktori.
Nota
Header fileapi.h mendefinisikan FindFirstFile 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.
Persyaratan
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
| server minimum yang didukung |
Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
| Platform Target |
Windows |
| Header |
fileapi.h (termasuk Windows.h) |
| Pustaka |
Kernel32.lib |
| DLL |
Kernel32.dll |
Lihat juga
SetFileAttributes
Tautan Simbolis
Menggunakan Header Windows