파일 이름 검색 함수

이러한 함수는 지정된 파일 이름을 검색하고 검색을 닫습니다.

설명

_findfirst 함수는 filespec 인수에 지정된 파일과 일치하는 파일 이름의 첫 번째 인스턴스에 대한 정보를 제공합니다. filespec 에는 호스트 운영 체제에서 지원하는 와일드카드 문자를 임의로 조합하여 사용할 수 있습니다.

함수는 에 정의된 구조체 _finddata_t 의 파일 정보를 반환합니다 IO.h. 패밀리의 다양한 함수가 _finddata_t 구조의 여러 변형을 사용합니다. 기본 _finddata_t 구조에는 다음과 같은 요소가 포함됩니다.

unsigned attrib
파일 특성입니다.

time_t time_create
파일 생성 시간(-1L FAT 파일 시스템의 경우). 이 시간은 UTC 형식으로 저장됩니다. 현지 시간으로 변환하려면 localtime_s를 사용합니다.

time_t time_access
마지막 파일 액세스 시간(-1L FAT 파일 시스템의 경우)입니다. 이 시간은 UTC 형식으로 저장됩니다. 현지 시간으로 변환하려면 localtime_s를 사용합니다.

time_t time_write
파일에 마지막으로 쓴 시간입니다. 이 시간은 UTC 형식으로 저장됩니다. 현지 시간으로 변환하려면 localtime_s를 사용합니다.

_fsize_t size
파일의 길이(바이트)입니다.

char name[ _MAX_PATH] NULL경로가 없는 일치하는 파일 또는 디렉터리의 -terminated 이름입니다.

FAT 시스템과 같이 파일의 생성 및 마지막 액세스 시간을 지원하지 않는 파일 시스템에서는 항상 -1L필드와 time_access 필드가 time_create 있습니다.

_MAX_PATH 는 260바이트로 정의 Stdlib.h 됩니다.

찾기 작업을 제한하기 위해 대상 특성(예: _A_RDONLY)을 지정할 수 없습니다. 이러한 특성은 구조의 _finddata_t 필드에 반환 attrib 되며 다음 값(정의IO.h됨)을 가질 수 있습니다. 사용자는 필드에 사용할 수 있는 유일한 값인 이러한 특성에 attrib 의존해서는 안 됩니다.

_A_ARCH
보관. 명령에서 파일을 변경하고 지울 BACKUP 때마다 설정합니다. 값: 0x20.

_A_HIDDEN
숨김 파일입니다. 옵션을 사용하지 /AH 않는 한 명령과 함께 DIR 자주 표시되지 않습니다. 일반 파일 및 이 특성이 있는 파일에 대한 정보를 반환합니다. 값: 0x02.

_A_NORMAL
일반 파일입니다. 설정된 다른 특성이 없고 제한 없이 읽거나 쓸 수 있는 파일입니다. 값: 0x00.

_A_RDONLY
읽기 전용. 쓰기 위해 파일을 열 수 없으며 이름이 같은 파일을 만들 수 없습니다. 값: 0x01.

_A_SUBDIR
하위 디렉터리입니다. 값: 0x10.

_A_SYSTEM
시스템 파일입니다. 또는 /A:S 옵션을 사용하지 않는 한 /A 명령에서 DIR 일반적으로 표시되지 않습니다. 값: 0x04.

_findnextfilespec 에 대한 이전 호출에 지정된 _findfirst인수와 일치하는 다음 이름(있는 경우)을 찾습니다. fileinfo 인수는 _findfirst에 대한 이전 호출에서 초기화되는 구조를 가리켜야 합니다. 일치하는 항목이 있으면 앞에서 설명한 대로 fileinfo 구조 내용이 변경됩니다. 그렇지 않으면 변경되지 않은 상태로 유지됩니다. _findclose 는 지정된 검색 핸들을 닫고 _findfirst_findnext모두에 연결된 모든 리소스를 해제합니다. _findfirst 또는 _findnext 에서 반환된 핸들을 먼저 _findclose에 전달해야만 전달되는 경로를 형성하는 디렉터리에서 삭제와 같은 수정 작업을 수행할 수 있습니다.

_find 함수를 중첩할 수 있습니다. 예를 들어 _findfirst 또는 _findnext 에 대한 호출에서 하위 디렉터리인 파일을 찾는 경우 _findfirst 또는 _findnext에 대한 다른 호출로 새 검색을 시작할 수 있습니다.

_wfindfirst_wfindnext_findfirst_findnext의 와이드 문자 버전입니다. 와이드 문자 버전의 구조 인수에는 _wfinddata_t 데이터 형식이 있으며, 이 형식은 IO.h 에 정의되어 있습니다 Wchar.h. 이 데이터 형식의 필드는 데이터 형식의 _finddata_t 필드와 동일합니다. 단 _wfinddata_tname, 필드에 형식이 아닌 char형식 wchar_t 이 있습니다. 그렇지 않으면 다음과 _wfindfirst_wfindnext 동일하게 _findfirst 동작합니다 _findnext.

_findfirst_findnext 는 64비트 시간 형식을 사용합니다. 이전 32비트 시간 형식을 사용해야 하는 경우 _USE_32BIT_TIME_T를 정의할 수 있습니다. 이름에 접미사가 있는 32 이러한 함수 버전은 32비트 시간 형식을 사용하고 접미사가 있는 64 함수는 64비트 시간 형식을 사용합니다.

_findfirst32i64, _findnext32i64, _wfindfirst32i64_wfindnext32i64 함수도 64비트 파일 길이를 사용 및 반환한다는 점만 제외하고 이러한 함수의 32비트 형식 버전과 동일하게 작동합니다. _findfirst64i32, _findnext64i32, _wfindfirst64i32_wfindnext64i32 함수는 64비트 시간 형식을 사용하지만 32비트 파일 길이를 사용합니다. 이러한 함수는 시간과 파일 크기에 대한 필드의 형식이 다른 _finddata_t 형식의 적절한 변경을 사용합니다.

_finddata_t 는 실제로 _finddata64i32_t (또는 _finddata32_t 가 정의된 경우 _USE_32BIT_TIME_T )로 계산되는 매크로입니다. 다음 표에서는 _finddata_t의 변형을 요약하여 보여 줍니다.

구조체 시간 형식 파일 크기 형식
_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_tunsigned long(32비트)에 대한 typedef입니다.

예시

// 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

참고 항목

시스템 호출