_find, _wfind Funktionen

Suche dieser Fähigkeiten und schließen Sucht nach dem angegebenen Dateinamen:

Hinweise

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

Die Funktion rückhol dateiinformationen in einer _finddata_t Struktur, die in IO.h definiert ist.Andere Funktionen in der Familie verwenden viele Variationen bei der _finddata_t Struktur.Die grundlegende _finddata_t Struktur enthält die folgenden Elemente:

  • unsigned attrib
    Dateiattribut.

  • time_t time_create
    Zeit zum Erstellen der Datei 1L (–) für FAT-Dateisysteme.Dieses Mal wird im UTC-Format gespeichert.Um zur Ortszeit konvertieren, verwenden Sie localtime_s.

  • time_t time_access
    Zeitpunkt des letzten Dateizugriff 1L (–) für FAT-Dateisysteme.Dieses Mal wird im UTC-Format gespeichert.Um in Ortszeit konvertieren möchten, verwenden Sie localtime_s.

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

  • _fsize_t size
    Länge der Datei in Byte.

  • char name[ _MAX_PATH]
    Klicken Sie auf NULL endende Distinguished Name der Datei oder des Verzeichnisses, ohne den Pfad.

In den Dateisystemen, die das Build nicht unterstützen und letzte Zugriffsgeschwindigkeiten einer Datei, z. B. das FAT-System, time_createund die time_accessFelder immer 1L sind.

_MAX_PATHwird in Stdlib.h als 260 Byte definiert.

Sie können keine Attribute Ziel angeben (z. B. _A_RDONLY), um den Suchvorgang zu beschränken.Diese Attribute werden auf dem attrib Feld der _finddata_tStruktur zurückgegeben und kann die folgenden Werte aufweisen (definiert in IO.h).Benutzer sollten nicht auf diese basieren, die nur Werte sind, die für das attrib Feld möglich sind.

  • _A_ARCH
    Archiv.Wird immer dann, wenn die Datei mit dem Befehl BACKUP geändert und gelöscht wird.Wert: 0x20.

  • _A_HIDDEN
    Versteckte Dateien.Nicht im Allgemeinen gesehen mit dem DIR-Befehl, es sei denn, die /AH Option verwenden.Gibt Informationen über die normale Dateien und Dateien zurück, die über dieses Attribut verfügen.Wert: 0x02.

  • _A_NORMAL
    Normal.Die Datei weist keine weiteren Attribute festgelegt und kann ohne Einschränkung gelesen oder geschrieben werden.Wert: 0x00.

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

  • _A_SUBDIR
    Unterverzeichnis.Wert: 0x10.

  • _A_SYSTEM
    Systemdatei.Nicht gewöhnlich gesehen mit dem DIR Befehl, es sei denn, die Option /A:S oder /A verwendet wird.Wert: 0x04.

_findnext durchsucht den folgenden Namen wenn eines der das filespec-Argument entspricht, das in einem vorherigen Aufruf an _findfirstangegeben wird.Das fileinfo-Argument muss zu einer Struktur zeigen, die vom vorherigen Aufruf von _findfirstinitialisiert wird.Wenn eine Übereinstimmung gefunden wird, werden die fileinfo Inhalt der Struktur geändert, wie weiter oben beschrieben.Andernfalls wird es unverändert gelassen._findclose schließt das angegebene Suche behandeln und gibt alle zugeordneten Ressourcen für _findfirst und _findnext.Das Handle, das entweder durch _findfirst oder _findnext zurückgegeben wurde, muss zuerst_findcloseübergeben werden, bevor Vorgänge ändern, z. B. Löschen, auf den Verzeichnissen ausgeführt werden können, die die Pfade erstellen, die an sie übergeben werden.

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

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

_findfirst und _findnext verwenden den Typ der 64-Bit-Zeit.Wenn Sie den alten Typ 32-Bit-Zeit verwenden müssen, können Sie _USE_32BIT_TIME_Tdefinieren.Die Versionen dieser Funktionen, die das 32 Suffix im Namen haben, verwenden 32-Bit-Zeit den Typ und die der 64 Verwendung der 64-Bit-Zeit Suffix.

Funktioniert _findfirst32i64, _findnext32i64, _wfindfirst32i64, und _wfindnext32i64 verhalten sich auch genauso wie 32-Bit-Zeit Versionen dieser Funktionen des 64-Bit-Datei, außer sie der Dimension verwenden und zurückgegeben werden soll.Funktioniert _findfirst64i32, _findnext64i32, _wfindfirst64i32und die Verwendung _wfindnext64i3264-Bit-Zeit jedoch typ- - Verwendungs32-bit-Datei der Dimension.Diese entsprechenden Varianten der Funktion verwenden _finddata_t geben ein, die die Felder unterschiedliche Typen für die Zeit und die Dateigröße haben.

_finddata_t ist eigentlich ein Makro, das in _finddata64i32_t ergibt (oder _finddata32_t , wenn _USE_32BIT_TIME_T definiert ist).In der folgenden Tabelle werden die Varianten _finddata_tzusammengefasst:

Struktur

Typ der Uhrzeit

Typ der Dateigrößen

_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 Bit).

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