Sdílet prostřednictvím


Funkce hledání názvů souborů

Tyto funkce vyhledávají a zavírají hledání zadaných názvů souborů:

Poznámky

Funkce _findfirst poskytuje informace o první instanci názvu souboru, který odpovídá souboru zadanému v argumentu filespec . Můžete použít jakoukoli filespec kombinaci zástupných znaků podporovaných hostitelským operačním systémem.

Funkce vrací informace o souboru ve _finddata_t struktuře, která je definována v IO.h. Různé funkce v rodině používají mnoho variant struktury _finddata_t . Základní _finddata_t struktura zahrnuje následující prvky:

unsigned attrib
Atribut souboru.

time_t time_create
Čas vytvoření souboru (-1L pro systémy souborů FAT). Tento čas je uložený ve formátu UTC. Chcete-li převést na místní čas, použijte localtime_s.

time_t time_access
Čas posledního přístupu k souborům (-1L pro systémy souborů FAT). Tento čas je uložený ve formátu UTC. Chcete-li převést na místní čas, použijte localtime_s.

time_t time_write
Čas posledního zápisu do souboru Tento čas je uložený ve formátu UTC. Chcete-li převést na místní čas, použijte localtime_s.

_fsize_t size
Délka souboru v bajtech

char name[ _MAX_PATH] NULL-terminated název odpovídajícího souboru nebo adresáře bez cesty.

V systémech souborů, které nepodporují vytváření a poslední přístupové časy souboru, jako je systém FAT, time_create jsou pole a time_access pole vždy -1L.

_MAX_PATH je definován jako Stdlib.h 260 bajtů.

Nemůžete zadat cílové atributy (například _A_RDONLY) pro omezení operace hledání. Tyto atributy jsou vráceny v attrib poli _finddata_t struktury a mohou mít následující hodnoty (definované v IO.h). Uživatelé by se neměli spoléhat na tyto atributy, které jsou jedinými možnými hodnotami pro attrib dané pole.

_A_ARCH
Archive (Webová aplikace: Archiv). Nastavte pokaždé, když se soubor změní a vymaže příkazem BACKUP . Hodnota: 0x20.

_A_HIDDEN
Skrytý soubor. Příkaz se často nezobrazuje DIR , pokud tuto /AH možnost nepoužíváte. Vrátí informace o normálních souborech a souborech, které mají tento atribut. Hodnota: 0x02.

_A_NORMAL
Normální. Soubor nemá žádné další atributy a nelze je číst nebo zapisovat bez omezení. Hodnota: 0x00.

_A_RDONLY
Jen pro čtení. Soubor nelze otevřít pro zápis a nelze vytvořit soubor se stejným názvem. Hodnota: 0x01.

_A_SUBDIR
Podadresář. Hodnota: 0x10.

_A_SYSTEM
Systémový soubor. Obvykle se příkazem DIR nezobrazuje, pokud /A se nepoužívá možnost nebo /A:S možnost. Hodnota: 0x04.

_findnext najde další název, pokud existuje, který odpovídá argumentu filespec zadanému v dřívějším volání _findfirst. Argument fileinfo by měl odkazovat na strukturu inicializovanou předchozím voláním _findfirst. Pokud se najde shoda, fileinfo obsah struktury se změní, jak je popsáno výše. Jinak zůstane beze změny. _findclose zavře zadaný popisovač vyhledávání a uvolní všechny přidružené prostředky pro oba _findfirst a _findnext. Popisovač vrácený buď _findfirst nebo _findnext musí být nejprve předán _findclose, před operacemi úprav, jako je odstranění, lze provádět s adresáři, které tvoří cesty předané jim.

Funkce můžete vnořit _find . Pokud například volání _findfirst nebo _findnext najde soubor, který je podadresářem, může být nové hledání zahájeno jiným voláním _findfirst nebo _findnext.

_wfindfirsta _wfindnext jsou široce znakové verze a _findnext_findfirst . Argument struktury širokoznakových verzí má _wfinddata_t datový typ, který je definován v IO.h a v Wchar.h. Pole tohoto datového typu jsou stejná jako pole datového _finddata_t typu, s tím rozdílem, že v name _wfinddata_t poli je typ wchar_t namísto typu char. Jinak se _wfindfirst _wfindnext chovají stejně jako _findfirst a _findnext.

_findfirst a _findnext použijte 64bitový typ času. Pokud musíte použít starý 32bitový typ času, můžete definovat _USE_32BIT_TIME_T. Verze těchto funkcí, které mají příponu 32 v jejich názvech, používají 32bitový typ času a ty s 64 příponou používají 64bitový typ času.

Funkce _findfirst32i64, _findnext32i64a _wfindfirst32i64_wfindnext32i64 také se chovají stejně jako 32bitové verze těchto funkcí s výjimkou jejich použití a vrácení 64bitové délky souboru. Functions _findfirst64i32, _findnext64i32a _wfindfirst64i32_wfindnext64i32 používají 64bitový typ času, ale používají 32bitové délky souboru. Tyto funkce používají vhodné varianty _finddata_t typu, ve kterém mají pole různé typy pro čas a velikost souboru.

_finddata_t je ve skutečnosti makro, které se vyhodnotí jako _finddata64i32_t (nebo _finddata32_t pokud _USE_32BIT_TIME_T je definováno). Následující tabulka shrnuje varianty _finddata_t:

Struktura Typ času Typ velikosti souboru
_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_ttypedef je pro unsigned long (32 bitů).

Příklad

// 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

Viz také

Systémová volání