_find, _wfind 함수
이러한 함수를 찾아 지정한 파일 이름에 대 한 검색을 닫습니다.
설명
_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로 끝나는 디렉터리 경로 없음 일치 하는 파일의 이름입니다.
만들고 FAT 시스템 등 파일의 마지막 액세스 시간을 지원 하지 않는 파일 시스템에 있는 time_create 및 time_access 필드는 항상 –1L입니다.
_MAX_PATH stdlib.h에서 260 바이트로 정의 됩니다.
대상 특성을 지정할 수 없습니다 (같은 _A_RDONLY) 찾기 작업을 제한할 수 있습니다.이 속성에서 반환 되는 attrib 필드는 _finddata_t 구조와 (io.h에 정의 된) 같은 값을 사용할 수 있습니다.사용자가이 대 한 가능한 값만 되 고 의존 합니다는 attrib 필드입니다.
_A_ARCH
보관 합니다.설정 파일을 변경 하 고 여의 선택이 취소 될 때마다는 BACKUP 명령입니다.값: 0x20입니다._A_HIDDEN
숨겨진된 파일입니다.사용 하지 않으면 DIR 명령을 사용 하 여 일반적으로 표시 되는 /AH 옵션입니다.일반적인 파일 및이 특성을 갖는 파일에 대 한 정보를 반환 합니다.값: 0x02._A_NORMAL
표준파일이 있는 아니오 다른 특성을 설정 하 고 읽거나 수에 제한 없이 쓸.값: 0x00입니다._A_RDONLY
읽기 전용.파일이 쓰기용으로 열 수 없습니다와 같은 이름을 가진 파일을 만들 수 없습니다.값: 0x01 있습니다._A_SUBDIR
하위 디렉터리입니다.값: 0x10입니다._A_SYSTEM
시스템 파일입니다.함께 않은 외부인의 DIR 하지 않으면 명령는 /A 또는 /A:S 옵션을 사용 합니다.값: 0x04.
_findnext다음 이름이 있는 경우 일치 하 발견은 filespec 를 호출 하 여 지정 된 인수 _findfirst.fileinfo 인수 이전 호출에 의해 초기화 된 구조체를 가리키고 합니다 _findfirst.일치 하는 항목이 발견 되 면 해당 fileinfo 구조 내용 앞에서 설명한 대로 변경 됩니다.그렇지 않으면 왼쪽으로 변경되지 않습니다._findclose지정한 검색 핸들을 닫은 및 연결 된 모든 리소스를 모두 해제 _findfirst 및 _findnext.의해 반환 된 핸들 _findfirst 또는 _findnext 를 먼저 전달 합니다 _findclose, 전달 경로 형성 하는 디렉터리에서 삭제와 같은 수정 작업을 수행할 수 있습니다.
중첩 될 수 있는 _find 함수.예를 들어, 호출 하는 경우 _findfirst 또는 _findnext 하위 디렉터리를 새로 지정 된 파일을 시작 하 여 호출 하 여 검색 한 _findfirst 또는 _findnext.
_wfindfirst및 _wfindnext 의 와이드 문자 버전은 _findfirst 및 _findnext.구조 인수의 와이드 문자 버전을 _wfinddata_t wchar.h와 io.h에 정의 된 데이터 형식입니다.이 데이터 형식의 필드를 갖는 동일은 _finddata_t 에서 제외 하 고 데이터 형식 _wfinddata_t 이름 필드 형식이 wchar_t 형식 대신 char.그렇지 않으면 _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, 및 _wfindnext64i3264 비트 시간 형식을 사용 하지만 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_tis a typedef for unsigned long (32 bits).
예제
// 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 );
}
}