_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 );
   }
}
  

См. также

Ссылки

Системные вызовы