Freigeben über


_find- und _wfind-Funktionen

Suche dieser Funktionen für und schließen Sucht angegebene Dateiname:

Hinweise

Die _findfirst-Funktion enthält Informationen über die erste Instanz eines Dateinamens, die der Datei entspricht, die im filespec-Argument angegeben wird. Sie können in filespec jede Kombination von Platzhalterzeichen verwenden, die vom Hostbetriebssystem unterstützt wird.

Die Funktionsrückholdateiinformationen _finddata_t in einer Struktur, die in IO.h definiert wird. Verschiedene Funktionen der Familie verwenden viele Varianten der _finddata_t-Struktur. Die grundlegende _finddata_t-Struktur enthält die folgenden Elemente:

  • unsigned attrib
    Dateiattribut.

  • time_t time_create
    Zeit der Dateierstellung (- 1L für FAT-Dateisysteme). Dieses Mal wird im UTC-Format gespeichert. Um in Ortszeit zu konvertieren, verwenden Sie localtime_s.

  • time_t time_access
    Zeit des letzten Dateizugriffs (- 1L für FAT-Dateisysteme). Dieses Mal wird im UTC-Format gespeichert. Um in Ortszeit zu konvertieren, verwenden Sie localtime_s.

  • time_t time_write
    Zeit des letzten schreiben in die Datei. Dieses Mal wird im UTC-Format gespeichert. Um in Ortszeit zu konvertieren, verwenden Sie localtime_s.

  • _fsize_t size
    Länge einer Datei in Bytes.

  • char name [ _MAX_PATH]
    Auf NULL endende Name der übereinstimmenden Datei bzw. des Verzeichnisses, ohne den Pfad.

in Dateisystemen, die nicht die Erstellung unterstützen und letzte Zugriffszeit einer Datei, z das FAT-System, die time_create und time_access Felder immer sind - 1L.

_MAX_PATH wird in Stdlib.h als 260 Byte definiert.

Sie können Zielattributen nicht angeben (wie _A_RDONLY) den Suchvorgang einzuschränken. Diese Attribute werden in das attrib Feld _finddata_t der Struktur zurückgegeben und können die folgenden Werte haben (in IO.h). Benutzer sollten nicht auf diese erstellen, die nur die Werte sind, die für das attrib Feld möglich sind.

  • _A_ARCH
    Archiv. Legen Sie fest, wenn die Datei von den BACKUP Befehl geändert und gelöscht wird. Wert: 0x20.

  • _A_HIDDEN
    Versteckte Datei. Nicht im Allgemeinen der mit dem DIR-Befehl, es sei denn, die /AH - Option verwenden. Geben Sie Informationen über die Dateien und Dateien, die dieses Attribut stammen. Wert: 0x02.

  • _A_NORMAL
    Normal. Datei verfügt über keine anderen festgelegten Attribute und kann ohne zur Einschränkung gelesen oder geschrieben werden. Wert: 0x00.

  • _A_RDONLY
    Schreibgeschützt. Datei kann nicht zum Schreiben geöffnet und eine Datei, die den gleichen Namen hat, kann nicht erstellt werden. Wert: 0x01.

  • _A_SUBDIR
    Unterverzeichnis. Wert: 0x10.

  • _A_SYSTEM
    Systemdatei. Nicht normalerweise statt mit DIR Befehl, es sei denn, die /A oder /A:S - Option verwendet wird. Wert: 0x04.

_findnext sucht den folgenden Namen ggf. der filespec das Argument entspricht, das in einem früheren Aufruf von _findfirst angegeben wird. Das fileinfo-Argument muss auf eine Struktur zeigen, die von den früheren Aufruf mit _findfirst initialisiert wird. Wenn eine Übereinstimmung gefunden wird, wird der fileinfo-Strukturinhalt geändert, wie zuvor beschrieben. Andernfalls wird es unverändert gelassen. _findclose schließt das angegebene Suchenhandle und gibt alle zugeordneten Ressourcen für _findfirst und _findnext. Das Handle, das entweder von _findfirst oder _findnext zurückgegeben, muss zunächst _findclose übergeben werden, bevor Änderungsvorgänge, wie das Löschen, auf Verzeichnisse ausgeführt werden können, die die Pfade bestehen, die an sie übergeben werden.

Sie können die Funktionen _find schachteln. Wenn ein Aufruf von _findfirst oder _findnext die Datei findet, die ein Unterverzeichnis ist, kann eine neue Suche mit einem anderen Aufruf von _findfirst oder _findnext auslöst werden.

_wfindfirst und _wfindnext sind Breitzeichenversionen von _findfirst und _findnext. Das Strukturargument der Breitzeichenversionen hat den _wfinddata_t Datentyp, der in IO.h und in Wchar.h definiert wird. Die Felder dieses Datentyps sind mit denen identisch des Datentyps _finddata_t, außer dass in _wfinddata_t ist das Feld Name den Typ wchar_t anstelle des Typs char. Andernfalls _wfindfirst und _wfindnext verhält sich genauso wie _findfirst und _findnext.

_findfirst und _findnext verwenden den 64-Bit-Zeittyp. Falls Sie den alten 32-Bit-Zeittyp verwenden müssen, können Sie _USE_32BIT_TIME_T definieren. Die Versionen dieser Funktionen, die das 32 - Suffix im Namen haben, verwenden den 32-Bit-Zeittyp und die mit der 64 Suffixverwendung der 64-Bit-Zeittyp.

Arbeitet _findfirst32i64, _findnext32i64, _wfindfirst32i64 und _wfindnext32i64, verhalten sich auch identisch mit den 32-Bit-Zeittypversionen dieser Funktionen, außer sie 64-Bit-Dateilängen verwenden und zurückgeben. Arbeitet _findfirst64i32, _findnext64i32, _wfindfirst64i32 und _wfindnext64i32 verwenden die 64-Bit-Zeittyp- jedoch -Verwendungs32-bit-Dateilängen. Diese entsprechenden Variationen der Funktionsverwendung _finddata_t geben ein, die die Felder Unterschiedliche Typen für die Zeit und die Quelldateigröße haben.

_finddata_t ist tatsächlich ein Makro, das zu _finddata64i32_t ausgewertet wird (oder _finddata32_t, wenn _USE_32BIT_TIME_T definiert ist). Die folgende Tabelle fasst die Variationen auf _finddata_t zusammengefasst:

Struktur

Zeittyp

Dateigrößentyp

_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 ist typedef für unsigned long (32 Bits).

Beispiel

// 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 );
   }
}
  

Siehe auch

Referenz

Systemaufrufe