Udostępnij za pośrednictwem


Funkcje wyszukiwania nazwy pliku

Te funkcje wyszukują i zamykają wyszukiwanie określonych nazw plików:

Uwagi

Funkcja _findfirst udostępnia informacje o pierwszym wystąpieniu nazwy pliku zgodnego z plikiem określonym w argumencie filespec . Można użyć w filespec dowolnej kombinacji symboli wieloznacznych obsługiwanych przez system operacyjny hosta.

Funkcje zwracają informacje o pliku w _finddata_t strukturze zdefiniowanej w pliku IO.h. Różne funkcje w rodzinie używają wielu odmian struktury _finddata_t . _finddata_t Podstawowa struktura obejmuje następujące elementy:

unsigned attrib
Atrybut pliku.

time_t time_create
Czas tworzenia pliku (-1L dla systemów plików FAT). Tym razem jest przechowywany w formacie UTC. Aby przekonwertować na czas lokalny, użyj polecenia localtime_s.

time_t time_access
Czas ostatniego dostępu do plików (-1L dla systemów plików FAT). Tym razem jest przechowywany w formacie UTC. Aby przekonwertować na czas lokalny, użyj polecenia localtime_s.

time_t time_write
Godzina ostatniego zapisu w pliku. Tym razem jest przechowywany w formacie UTC. Aby przekonwertować na czas lokalny, użyj polecenia localtime_s.

_fsize_t size
Długość pliku w bajtach.

char name[ _MAX_PATH] NULL- zakończona nazwa dopasowanego pliku lub katalogu, bez ścieżki.

W systemach plików, które nie obsługują tworzenia i ostatniego czasu dostępu do pliku, takich jak system FAT, time_create pola i time_access są zawsze -1L.

_MAX_PATH parametr jest zdefiniowany w Stdlib.h formacie 260 bajtów.

Nie można określić atrybutów docelowych (takich jak _A_RDONLY) w celu ograniczenia operacji znajdowania. Te atrybuty są zwracane w attrib polu _finddata_t struktury i mogą mieć następujące wartości (zdefiniowane w IO.hpliku ). Użytkownicy nie powinni polegać na tych atrybutach jako jedynymi wartościami możliwymi attrib dla pola.

_A_ARCH
Archive (Aplikacja internetowa: Archiwum). Ustaw za każdym razem, gdy plik zostanie zmieniony i wyczyszczone przez BACKUP polecenie . Wartość: 0x20.

_A_HIDDEN
Ukryty plik. Nie jest często spotykany za DIR pomocą polecenia , chyba że używasz /AH opcji . Zwraca informacje o normalnych plikach i plikach, które mają ten atrybut. Wartość: 0x02.

_A_NORMAL
Normalny. Plik nie ma innych atrybutów ustawionych i można je odczytywać lub zapisywać bez ograniczeń. Wartość: 0x00.

_A_RDONLY
Tylko do odczytu. Nie można otworzyć pliku do zapisu i nie można utworzyć pliku o tej samej nazwie. Wartość: 0x01.

_A_SUBDIR
Podkatalogu. Wartość: 0x10.

_A_SYSTEM
Plik systemowy. Zwykle nie jest widoczny za DIR pomocą polecenia , chyba że /A jest używana opcja lub /A:S . Wartość: 0x04.

_findnext znajduje następną nazwę, jeśli istnieje, która pasuje do argumentu filespec określonego we wcześniejszym wywołaniu metody _findfirst. fileinfo Argument powinien wskazywać strukturę zainicjowaną przez poprzednie wywołanie metody _findfirst. Jeśli zostanie znalezione dopasowanie, fileinfo zawartość struktury zostanie zmieniona zgodnie z wcześniejszym opisem. W przeciwnym razie pozostanie bez zmian. _findclose Zamyka określony uchwyt wyszukiwania i zwalnia wszystkie skojarzone zasoby dla obu _findfirst i _findnext. Dojście zwrócone przez _findfirst element lub _findnext należy najpierw przekazać do _findcloseelementu przed operacjami modyfikacji, takimi jak usuwanie, można wykonać na katalogach, które tworzą przekazane do nich ścieżki.

Funkcje można zagnieżdżać _find . Jeśli na przykład wywołanie _findfirst lub _findnext znalezienie pliku, który jest podkatalogem, nowe wyszukiwanie można zainicjować za pomocą innego wywołania metody _findfirst lub _findnext.

_wfindfirst i _wfindnext są wersjami _findfirst o szerokim znaku i _findnext. Argument struktury wersji szerokiego znaku ma _wfinddata_t typ danych, który jest zdefiniowany w IO.h elementach i w .Wchar.h Pola tego typu danych są takie same jak pola _finddata_t typu danych, z tą różnicą, że w _wfinddata_t name polu jest typu wchar_t zamiast typu char. _wfindfirst W przeciwnym razie i _wfindnext zachowują się identycznie jak _findfirst i _findnext.

_findfirst i _findnext użyj 64-bitowego typu czasu. Jeśli musisz użyć starego 32-bitowego typu czasu, możesz zdefiniować _USE_32BIT_TIME_Twartość . Wersje tych funkcji, które mają 32 sufiks w nazwach, używają typu czasu 32-bitowego, a te z sufiksem 64 używają typu czasu 64-bitowego.

Funkcje _findfirst32i64, , _wfindfirst32i64_findnext32i64i _wfindnext32i64 zachowują się identycznie z wersjami 32-bitowego typu czasu tych funkcji, z wyjątkiem używania i zwracania 64-bitowych długości plików. Funkcje _findfirst64i32, _findnext64i32, _wfindfirst64i32i _wfindnext64i32 używają typu czasu 64-bitowego, ale używają 32-bitowych długości plików. Te funkcje używają odpowiednich odmian _finddata_t typu, w których pola mają różne typy dla czasu i rozmiaru pliku.

_finddata_t jest w rzeczywistości makro, które daje w wyniku _finddata64i32_t (lub _finddata32_t jeśli _USE_32BIT_TIME_T jest zdefiniowane). W poniższej tabeli podsumowano odmiany elementu _finddata_t:

Struktura Typ godziny Typ rozmiaru 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_t jest elementem typedef for unsigned long (32 bity).

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

Zobacz też

Wywołania systemowe