Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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