Udostępnij za pośrednictwem


_find, _wfind — Funkcje

Te funkcje wyszukiwania i zamknąć wyszukuje nazwy określonego pliku:

Uwagi

_findfirst Funkcja zawiera informacje dotyczące pierwszej instancji nazwę pliku, który pasuje do określonego w pliku filespec argument.Można użyć w filespec dowolnej kombinacji znaków wieloznacznych jest obsługiwany przez hosta systemu operacyjnego.

Funkcje te zwracają informacje o plikach w _finddata_t strukturę, która jest zdefiniowana w IO.h.Różne funkcje w systemach z rodziny używać wielu zmian na _finddata_t struktury.Podstawowe _finddata_t struktury obejmuje następujące elementy:

  • unsigned attrib
    Atrybut pliku.

  • time_t time_create
    Godzina utworzenia pliku (–1L dla systemów plików FAT).Czas ten jest przechowywany w formacie UTC.Aby przekonwertować na czas lokalny, należy użyć localtime_s.

  • time_t time_access
    Czas ostatniego dostępu do pliku (–1L dla systemów plików FAT).Czas ten jest przechowywany w formacie UTC.Aby przekonwertować na czas lokalny, należy użyć localtime_s.

  • time_t time_write
    Czas ostatniego zapisu do pliku.Czas ten jest przechowywany w formacie UTC.Aby przekonwertować na czas lokalny, należy użyć localtime_s.

  • _fsize_t size
    Długość pliku w bajtach.

  • char name [ _MAX_PATH]
    Nazwa zakończony znakiem null, dopasowanych pliku lub katalogu, bez ścieżki.

W systemach plików, które nie obsługują tworzenia i czasu ostatniego pliku, takie jak system FAT time_create i time_access pól są zawsze –1L.

_MAX_PATH jest zdefiniowana w plik Stdlib.h jako 260 bajtów.

Nie można określić atrybuty docelowego (takie jak _A_RDONLY) aby ograniczyć działanie Znajdź.Te atrybuty są zwracane w attrib pola _finddata_t struktury i może mieć następujące wartości (zdefiniowanych w IO.h).Użytkownicy nie powinny polegać na te są tylko wartości możliwych do attrib pola.

  • _A_ARCH
    Archiwum.Ustaw w każdym przypadku, gdy plik jest zmieniony i wyczyszczone przez BACKUP polecenia.Wartość: 0x20.

  • _A_HIDDEN
    Plik ukryty.Nie jest ogólnie postrzegane przy użyciu polecenia DIR, chyba że używasz /AH opcji.Zwraca informacje dotyczące zwykłych plików i plików, które mają ten atrybut.Wartość: 0x02.

  • _A_NORMAL
    Normalny.Plik nie ma innych atrybutów set i można odczytywać ani zapisywać do bez ograniczeń.Wartość: 0x00.

  • _A_RDONLY
    Tylko do odczytu.Nie można otworzyć pliku do zapisu i nie można utworzyć pliku, który ma taką samą nazwę.Wartość: 0x01.

  • _A_SUBDIR
    Podkatalog.Wartość: 0x10.

  • _A_SYSTEM
    Plik systemowy.Nie są zwykle widoczne z DIR polecenia, chyba że /A lub /A:S jest używana opcja.Wartość: 0x04.

_findnextWyszukuje następnej nazwy, jeśli odpowiada filespec argument w wywołaniu wcześniej _findfirst.fileinfo Argument powinny wskazywać struktury, zainicjowane przez poprzednie wywołanie _findfirst.Jeśli zostanie znaleziony odpowiednik, fileinfo struktury zawartości są zmieniane w sposób opisany wcześniej.W przeciwnym razie pozostanie niezmieniona._findcloseZamyka dojście wyszukiwania i zwalnia wszystkie skojarzone zasoby dla obu _findfirst i _findnext.Uchwyt zwrócony przez albo _findfirst lub _findnext najpierw muszą zostać przekazane do _findclose, zanim będzie można dokonać modyfikacji operacji, takich jak usuwanie, na katalogi, które tworzą ścieżek, przekazany do nich.

Można zagnieździć _find funkcji.Na przykład, jeśli wywołanie do _findfirst lub _findnext znajdzie pliku, który jest podkatalog, nowe wyszukiwanie, może zostać zainicjowane z inne wywołanie do _findfirst lub _findnext.

_wfindfirsti _wfindnext wersji szerokich znaków z _findfirst i _findnext.Argument struktury wersji szerokich znaków ma _wfinddata_t typ danych, który jest zdefiniowany w IO.h i Wchar.h.Pola tego typu danych są takie same, jak te, które _finddata_t typu danych, z wyjątkiem tych, w _wfinddata_t pole Nazwa jest typu wchar_t zamiast typu char.W przeciwnym razie _wfindfirst i _wfindnext zachowują się identycznie do _findfirst i _findnext.

_findfirsti _findnext użyć typu Godzina 64-bitowych.Jeśli musisz użyć typu stary godzina 32-bitowe, można zdefiniować _USE_32BIT_TIME_T.Wersje te funkcje, które mają 32 sufiksu nazwy ich użyć typu Godzina 32-bitowe i z 64 sufiks użyć typu Godzina 64-bitowych.

Funkcje _findfirst32i64, _findnext32i64, _wfindfirst32i64, i _wfindnext32i64 również działają identycznie do czasu 32-bitowych wersji typu te funkcje z wyjątkiem użyć i powrócić do długości 64-bitowy plik.Funkcje _findfirst64i32, _findnext64i32, _wfindfirst64i32, i _wfindnext64i32użyć typu Godzina 64-bitowych ale długości 32-bitowy plik.Funkcje te korzystają z odpowiednich zmian _finddata_t typu, w którym pola mają różne typy raz, a rozmiar pliku.

_finddata_tfaktycznie makro, którego wynikiem jest _finddata64i32_t (lub _finddata32_t Jeśli _USE_32BIT_TIME_T jest zdefiniowany).W następującej tabeli podsumowano różnice w _finddata_t:

Struktura

Typ czasu

Wpisz rozmiar pliku

_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_tis a typedef for unsigned long (32 bits).

Przykład

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

Zobacz też

Informacje

Wywołania systemowe