Bagikan melalui


Fungsi pencarian nama file

Fungsi-fungsi ini mencari dan menutup pencarian untuk nama file tertentu:

Keterangan

Fungsi ini _findfirst menyediakan informasi tentang instans pertama nama file yang cocok dengan file yang ditentukan dalam filespec argumen. Anda dapat menggunakan dalam filespec kombinasi karakter kartubebas apa pun yang didukung oleh sistem operasi host.

Fungsi mengembalikan informasi file dalam _finddata_t struktur, yang didefinisikan dalam IO.h. Berbagai fungsi dalam keluarga menggunakan banyak variasi pada _finddata_t struktur. Struktur dasar _finddata_t mencakup elemen-elemen berikut:

unsigned attrib
Atribut file.

time_t time_create
Waktu pembuatan file (-1L untuk sistem file FAT). Kali ini disimpan dalam format UTC. Untuk mengonversi ke waktu lokal, gunakan localtime_s.

time_t time_access
Waktu akses file terakhir (-1L untuk sistem file FAT). Kali ini disimpan dalam format UTC. Untuk mengonversi ke waktu lokal, gunakan localtime_s.

time_t time_write
Waktu penulisan terakhir ke file. Kali ini disimpan dalam format UTC. Untuk mengonversi ke waktu lokal, gunakan localtime_s.

_fsize_t size
Panjang file dalam byte.

char name[ _MAX_PATH] NULL-nama yang dihentikan dari file atau direktori yang cocok, tanpa jalur.

Dalam sistem file yang tidak mendukung pembuatan dan waktu akses terakhir file, seperti sistem FAT, time_create bidang dan time_access selalu -1L.

_MAX_PATH didefinisikan dalam Stdlib.h sebagai 260 byte.

Anda tidak dapat menentukan atribut target (seperti _A_RDONLY) untuk membatasi operasi temukan. Atribut ini dikembalikan di attrib bidang _finddata_t struktur dan dapat memiliki nilai berikut (ditentukan dalam IO.h). Pengguna tidak boleh mengandalkan atribut ini menjadi satu-satunya nilai yang mungkin untuk bidang tersebut attrib .

_A_ARCH
Archive. Atur setiap kali file diubah dan dibersihkan oleh BACKUP perintah . Nilai: 0x20.

_A_HIDDEN
File tersembunyi. Tidak sering terlihat dengan DIR perintah, kecuali Anda menggunakan /AH opsi . Mengembalikan informasi tentang file normal dan file yang memiliki atribut ini. Nilai: 0x02.

_A_NORMAL
Biasa. File tidak memiliki atribut lain yang ditetapkan dan dapat dibaca atau ditulis tanpa batasan. Nilai: 0x00.

_A_RDONLY
Baca-saja. File tidak dapat dibuka untuk ditulis dan file yang memiliki nama yang sama tidak dapat dibuat. Nilai: 0x01.

_A_SUBDIR
Subdirektori. Nilai: 0x10.

_A_SYSTEM
File sistem. Tidak biasanya terlihat dengan DIR perintah, kecuali /A opsi atau /A:S digunakan. Nilai: 0x04.

_findnext menemukan nama berikutnya, jika ada, yang cocok dengan filespec argumen yang ditentukan dalam panggilan sebelumnya ke _findfirst. Argumen fileinfo harus menunjuk ke struktur yang diinisialisasi oleh panggilan sebelumnya ke _findfirst. Jika kecocokan fileinfo ditemukan, konten struktur diubah seperti yang dijelaskan sebelumnya. Jika tidak, itu dibiarkan tidak berubah. _findclose menutup handel pencarian yang ditentukan dan merilis semua sumber daya terkait untuk dan _findfirst _findnext. Handel yang dikembalikan oleh salah satu _findfirst atau _findnext harus terlebih dahulu diteruskan ke _findclose, sebelum operasi modifikasi, seperti menghapus, dapat dilakukan pada direktori yang membentuk jalur yang diteruskan ke mereka.

Anda dapat menumpuk _find fungsi. Misalnya, jika panggilan ke _findfirst atau _findnext menemukan file yang merupakan subdirektori, pencarian baru dapat dimulai dengan panggilan lain ke _findfirst atau _findnext.

_wfindfirst dan _wfindnext merupakan versi karakter luas dari _findfirst dan _findnext. Argumen struktur dari versi karakter lebar memiliki _wfinddata_t jenis data, yang didefinisikan dalam IO.h dan di Wchar.h. Bidang tipe data ini sama dengan bidang tipe _finddata_t data, kecuali di _wfinddata_t name bidang berjenis wchar_t bukan tipe char. Jika tidak, _wfindfirst dan _wfindnext berulah identik dengan _findfirst dan _findnext.

_findfirst dan _findnext gunakan jenis waktu 64-bit. Jika Anda harus menggunakan jenis waktu 32-bit lama, Anda dapat menentukan _USE_32BIT_TIME_T. Versi fungsi-fungsi ini yang memiliki 32 akhiran dalam namanya menggunakan jenis waktu 32-bit, dan yang dengan 64 akhiran menggunakan jenis waktu 64-bit.

Functions _findfirst32i64, _findnext32i64, _wfindfirst32i64, dan _wfindnext32i64 juga bereaksi identik dengan versi jenis waktu 32-bit dari fungsi-fungsi ini kecuali mereka menggunakan dan mengembalikan panjang file 64-bit. Functions _findfirst64i32, _findnext64i32, _wfindfirst64i32, dan _wfindnext64i32 gunakan jenis waktu 64-bit tetapi gunakan panjang file 32-bit. Fungsi-fungsi ini menggunakan variasi _finddata_t jenis yang sesuai di mana bidang memiliki jenis yang berbeda untuk waktu dan ukuran file.

_finddata_t sebenarnya adalah makro yang mengevaluasi ke _finddata64i32_t (atau _finddata32_t jika _USE_32BIT_TIME_T ditentukan). Tabel berikut ini meringkas variasi pada _finddata_t:

Struktur Jenis waktu Jenis ukuran file
_finddata_t, _wfinddata_t __time64_t _fsize_t
_finddata32_t, _wfinddata32_t __time32_t _fsize_t
__finddata64_t, _wfinddata64_t __time64_t __int64
_finddata32i64_t, _wfinddata32i64_t __time32_t __int64
_finddata64i32_t, _wfinddata64i32_t __time64_t _fsize_t

_fsize_t adalah typedef untuk unsigned long (32 bit).

Contoh

// crt_find.c
// This program uses the 32-bit _find functions to print
// a list of all files (and their attributes) with a .C extension
// in the current directory.

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>

int main( void )
{
   struct _finddata_t c_file;
   intptr_t hFile;

   // Find first .c file in current directory
   if( (hFile = _findfirst( "*.c", &c_file )) == -1L )
      printf( "No *.c files in current directory!\n" );
   else
   {
      printf( "Listing of .c files\n\n" );
      printf( "RDO HID SYS ARC  FILE         DATE %25c SIZE\n", ' ' );
      printf( "--- --- --- ---  ----         ---- %25c ----\n", ' ' );
      do {
         char buffer[30];
         printf( ( c_file.attrib & _A_RDONLY ) ? " Y  " : " N  " );
         printf( ( c_file.attrib & _A_HIDDEN ) ? " Y  " : " N  " );
         printf( ( c_file.attrib & _A_SYSTEM ) ? " Y  " : " N  " );
         printf( ( c_file.attrib & _A_ARCH )   ? " Y  " : " N  " );
         ctime_s( buffer, _countof(buffer), &c_file.time_write );
         printf( " %-12s %.24s  %9ld\n",
            c_file.name, buffer, c_file.size );
      } while( _findnext( hFile, &c_file ) == 0 );
      _findclose( hFile );
   }
}
Listing of .c files

RDO HID SYS ARC  FILE         DATE                           SIZE
--- --- --- ---  ----         ----                           ----
N   N   N   Y   blah.c       Wed Feb 13 09:21:42 2002       1715
N   N   N   Y   test.c       Wed Feb 06 14:30:44 2002        312

Lihat juga

Panggilan sistem