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