파일 이름 검색 함수Filename Search Functions

이러한 함수는 지정된 파일 이름을 검색하고 검색을 닫습니다.These functions search for and close searches for specified file names:

주의Remarks

_findfirst 함수는 filespec 인수에 지정된 파일과 일치하는 파일 이름의 첫 번째 인스턴스에 대한 정보를 제공합니다.The _findfirst function provides information about the first instance of a file name that matches the file specified in the filespec argument. filespec 에는 호스트 운영 체제에서 지원하는 와일드카드 문자를 임의로 조합하여 사용할 수 있습니다.You can use in filespec any combination of wildcard characters that is supported by the host operating system.

이 함수는 파일 정보를 IO.h에 정의된 _finddata_t 구조로 반환합니다.The functions return file information in a _finddata_t structure, which is defined in IO.h. 패밀리의 다양한 함수가 _finddata_t 구조의 여러 변형을 사용합니다.Various functions in the family use many variations on the _finddata_t structure. 기본 _finddata_t 구조에는 다음과 같은 요소가 포함됩니다.The basic _finddata_t structure includes the following elements:

unsigned attrib
파일 특성입니다.File attribute.

time_t time_create
파일을 만든 시간입니다(FAT 파일 시스템의 경우 –1L).Time of file creation (-1L for FAT file systems). 이 시간은 UTC 형식으로 저장됩니다.This time is stored in UTC format. 현지 시간으로 변환하려면 localtime_s를 사용합니다.To convert to the local time, use localtime_s.

time_t time_access
마지막 파일 액세스 시간입니다(FAT 파일 시스템의 경우 –1L).Time of the last file access (-1L for FAT file systems). 이 시간은 UTC 형식으로 저장됩니다.This time is stored in UTC format. 현지 시간으로 변환하려면 localtime_s를 사용합니다.To convert to the local time, use localtime_s.

time_t time_write
파일에 마지막으로 쓴 시간입니다.Time of the last write to file. 이 시간은 UTC 형식으로 저장됩니다.This time is stored in UTC format. 현지 시간으로 변환하려면 localtime_s를 사용합니다.To convert to the local time, use localtime_s.

_fsize_t size
파일의 길이(바이트)입니다.Length of the file in bytes.

char name[ _MAX_PATH]char name[ _MAX_PATH]
일치하는 파일 또는 디렉터리의 null로 끝나는 이름이며, 경로는 제외합니다.Null-terminated name of matched file or directory, without the path.

파일을 만든 시간과 마지막 액세스 시간을 지원하지 않는 FAT 시스템과 같은 파일 시스템에서는 time_createtime_access 필드가 항상 –1L입니다.In file systems that do not support the creation and last access times of a file, such as the FAT system, the time_create and time_access fields are always -1L.

_MAX_PATH는 Stdlib.h에 260바이트로 정의되어 있습니다._MAX_PATH is defined in Stdlib.h as 260 bytes.

대상 특성(예: _A_RDONLY)을 지정하여 찾기 작업을 제한할 수 있습니다.You cannot specify target attributes (such as _A_RDONLY) to limit the find operation. 이러한 특성은 attrib 구조의 _finddata_t 필드로 반환되며 다음과 같은 값일 수 있습니다(IO.h에 정의).These attributes are returned in the attrib field of the _finddata_t structure and can have the following values (defined in IO.h). 사용자는 이러한 값만 attrib 필드에 사용할 수 있다고 간주해서는 안 됩니다.Users should not rely on these being the only values possible for the attrib field.

_A_ARCH
보관 파일입니다.Archive. BACKUP 명령으로 파일을 변경하고 지울 때마다 설정합니다.Set whenever the file is changed and cleared by the BACKUP command. 값: 0x20Value: 0x20.

_A_HIDDEN
숨김 파일입니다.Hidden file. /AH 옵션을 사용하지 않는 한 일반적으로 DIR 명령으로 표시되지 않습니다.Not generally seen with the DIR command, unless you use the /AH option. 일반 파일 및 이 특성이 있는 파일에 대한 정보를 반환합니다.Returns information about normal files and files that have this attribute. 값: 0x02Value: 0x02.

_A_NORMAL
일반 파일입니다.Normal. 설정된 다른 특성이 없고 제한 없이 읽거나 쓸 수 있는 파일입니다.File has no other attributes set and can be read or written to without restriction. 값: 0x00Value: 0x00.

_A_RDONLY
읽기 전용입니다.Read-only. 쓰기 위해 파일을 열 수 없고 동일한 이름의 파일을 만들 수 없습니다.File cannot be opened for writing and a file that has the same name cannot be created. 값: 0x01Value: 0x01.

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

_A_SYSTEM
시스템 파일입니다.System file. /A 또는 /A:S 옵션을 사용하지 않는 한 일반적으로 DIR 명령으로 표시되지 않습니다.Not ordinarily seen with the DIR command, unless the /A or /A:S option is used. 값: 0x04Value: 0x04.

_findnextfilespec 에 대한 이전 호출에 지정된 _findfirst인수와 일치하는 다음 이름(있는 경우)을 찾습니다._findnext finds the next name, if any, that matches the filespec argument specified in an earlier call to _findfirst. fileinfo 인수는 _findfirst에 대한 이전 호출에서 초기화되는 구조를 가리켜야 합니다.The fileinfo argument should point to a structure initialized by the previous call to _findfirst. 일치하는 항목이 있으면 앞에서 설명한 대로 fileinfo 구조 내용이 변경됩니다.If a match is found, the fileinfo structure contents are changed as described earlier. 일치하는 항목이 없으면 변경되지 않습니다.Otherwise, it is left unchanged. _findclose 는 지정된 검색 핸들을 닫고 _findfirst_findnext모두에 연결된 모든 리소스를 해제합니다._findclose closes the specified search handle and releases all associated resources for both _findfirst and _findnext. _findfirst 또는 _findnext 에서 반환된 핸들을 먼저 _findclose에 전달해야만 전달되는 경로를 형성하는 디렉터리에서 삭제와 같은 수정 작업을 수행할 수 있습니다.The handle returned by either _findfirst or _findnext must first be passed to _findclose, before modification operations, such as deleting, can be performed on the directories that form the paths passed to them.

_find 함수를 중첩할 수 있습니다.You can nest the _find functions. 예를 들어 _findfirst 또는 _findnext 에 대한 호출에서 하위 디렉터리인 파일을 찾는 경우 _findfirst 또는 _findnext에 대한 다른 호출로 새 검색을 시작할 수 있습니다.For example, if a call to _findfirst or _findnext finds the file that is a subdirectory, a new search can be initiated with another call to _findfirst or _findnext.

_wfindfirst_wfindnext_findfirst_findnext의 와이드 문자 버전입니다._wfindfirst and _wfindnext are wide-character versions of _findfirst and _findnext. 와이드 문자 버전의 구조 인수는 IO.h 및 Wchar.h에 정의된 _wfinddata_t 데이터 형식입니다.The structure argument of the wide-character versions has the _wfinddata_t data type, which is defined in IO.h and in Wchar.h. 이 데이터 형식의 필드는 _finddata_t 데이터 형식의 필드와 동일합니다. 단, _wfinddata_t 에서 이름 필드는 wchar_t 형식이 아니라 char형식입니다.The fields of this data type are the same as those of the _finddata_t data type, except that in _wfinddata_t the name field is of type wchar_t instead of type char. 그 외에 _wfindfirst_wfindnext_findfirst_findnext와 동일하게 작동합니다.Otherwise _wfindfirst and _wfindnext behave identically to _findfirst and _findnext.

_findfirst_findnext 는 64비트 시간 형식을 사용합니다._findfirst and _findnext use the 64-bit time type. 이전 32비트 시간 형식을 사용해야 하는 경우 _USE_32BIT_TIME_T를 정의할 수 있습니다.If you must use the old 32-bit time type, you can define _USE_32BIT_TIME_T. 이러한 함수 중 이름에 32 접미사가 있는 버전은 32비트 시간 형식을 사용하고 64 접미사가 있는 버전은 64비트 시간 형식을 사용합니다.The versions of these functions that have the 32 suffix in their names use the 32-bit time type, and those with the 64 suffix use the 64-bit time type.

_findfirst32i64, _findnext32i64, _wfindfirst32i64_wfindnext32i64 함수도 64비트 파일 길이를 사용 및 반환한다는 점만 제외하고 이러한 함수의 32비트 형식 버전과 동일하게 작동합니다.Functions _findfirst32i64, _findnext32i64, _wfindfirst32i64, and _wfindnext32i64 also behave identically to the 32-bit time type versions of these functions except they use and return 64-bit file lengths. _findfirst64i32, _findnext64i32, _wfindfirst64i32_wfindnext64i32 함수는 64비트 시간 형식을 사용하지만 32비트 파일 길이를 사용합니다.Functions _findfirst64i32, _findnext64i32, _wfindfirst64i32, and _wfindnext64i32 use the 64-bit time type but use 32-bit file lengths. 이러한 함수는 시간과 파일 크기에 대한 필드의 형식이 다른 _finddata_t 형식의 적절한 변경을 사용합니다.These functions use appropriate variations of the _finddata_t type in which the fields have different types for the time and the file size.

_finddata_t 는 실제로 _finddata64i32_t (또는 _finddata32_t 가 정의된 경우 _USE_32BIT_TIME_T )로 계산되는 매크로입니다._finddata_t is actually a macro that evaluates to _finddata64i32_t (or _finddata32_t if _USE_32BIT_TIME_T is defined). 다음 표에서는 _finddata_t의 변형을 요약하여 보여 줍니다.The following table summarizes the variations on _finddata_t:

구조체Structure 시간 형식Time type 파일 크기 형식File size type
_finddata_t, _wfinddata_t_finddata_t, _wfinddata_t __time64_t _fsize_t
_finddata32_t, _wfinddata32_t_finddata32_t, _wfinddata32_t __time32_t _fsize_t
__finddata64_t, __wfinddata64_t__finddata64_t, __wfinddata64_t __time64_t __int64
_finddata32i64_t, _wfinddata32i64_t_finddata32i64_t, _wfinddata32i64_t __time32_t __int64
_finddata64i32_t, _wfinddata64i32_t_finddata64i32_t, _wfinddata64i32_t __time64_t _fsize_t

_fsize_tunsigned long(32비트)에 대한 typedef입니다._fsize_t is a typedef for unsigned long (32 bits).

예제Example

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

참고 항목See Also

시스템 호출System Calls