_find, функции _wfind
Поиск этих функций и закрывает выполняет поиск имен указанного файла.
Заметки
_findfirst функция предоставляет сведения о первом экземпляре имени файла, соответствующий файлу, указанному в filespec аргумент.Можно использовать внутри filespec все сочетания подстановочные знаки, поддерживаемое операционной системой сервера виртуальных машин.
Сведения о файле функций, возвращаемые в _finddata_t структура, которая определена в IO.h.Различные функции в семействе много изменений в _finddata_t структура.Basic _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-завершенное имя, которые соответствуют файла или каталога, без пути.
В файловых системах, которые не поддерживают создание образца файла и последние раз, например ТУЧНАЯ система 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 OR /A:S параметр используется.Значение: 0x04.
_findnext находит следующее имя, которое соответствует filespec данный аргумент, определенный в предыдущем вызове метода _findfirst.fileinfo аргумент должен указывать на структуре, инициализированной предыдущим вызовом метода _findfirst.Если соответствие найдено, fileinfo содержимое структуры изменены, как описано выше.В противном случае он остается неизменным._findclose закрывает указанный дескриптор поиска и выпусков все связанные с ним ресурсы для обоих _findfirst и _findnext.Маркер, возвращенный этим _findfirst OR _findnext сначала передаваться_findcloseперед выполнением операции изменения, например удаление могут быть выполнены в каталогах, которые формируют пути, переданные ему.
Можно вложить _find функции.Например, если вызов _findfirst OR _findnext находит файл, подкаталог, новый поиск может быть инициировано с другим вызовом _findfirst OR _findnext.
_wfindfirst и _wfindnext версия расширенных символов _findfirst и _findnext.Аргумент структуры версий знаковая константа содержит _wfinddata_t тип данных, указанный в IO.h и Wchar.h.Поля этого типа данных эти же, как у удаляемого _finddata_t тип данных, за исключением того, что in _wfinddata_t поле имени типа wchar_t вместо типа char.В противном случае - значение _wfindfirst и _wfindnext поступайте идентично _findfirst и _findnext.
_findfirst и _findnext используйте тип время обновления 64 (sp2).Если необходимо использовать старый 32 тип времени, то можно указать _USE_32BIT_TIME_T.Версии этих функций, которые имеют 32 суффикс в своих именах, использует 32 бита, и с типом времени 64 использование суффикса 64 тип времени.
Функции _findfirst32i64" _findnext32i64" _wfindfirst32i64и _wfindnext32i64 также поступайте идентично 32 версиям типа время этих функций за исключением того, что они используют и возвращают 64 длины файла.Функции _findfirst64i32" _findnext64i32" _wfindfirst64i32и _wfindnext64i32используйте тип время обновления 64 (sp2) используйте длины, но 32 (sp2) файла.Эти изменения использования функций соответствующие _finddata_t введите которому поля имеют различные типы для времени и размера файла.
_finddata_t макрос, результатом которого является фактически _finddata64i32_t (или _finddata32_t If _USE_32BIT_TIME_T определяет).В следующей таблице приводятся изменения on _finddata_t.
Структура |
Тип Time |
Тип размера файла |
---|---|---|
_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 a typedef для unsigned long (32 бита).
Пример
// 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 );
}
}