Compartilhar via


_find, _wfind funções

Essas funções procurar e feche a procura por nomes de arquivo especificado:

Comentários

O _findfirst função fornece informações sobre a primeira instância de um nome de arquivo que corresponde ao especificado no arquivo de filespec argumento.Você pode usar em filespec qualquer combinação de caracteres curinga que é suportada pelo sistema operacional do host.

As funções retornam informações sobre o arquivo em um _finddata_t estrutura, que é definida em IO.h.Várias funções da família usam muitas variações sobre o _finddata_t estrutura.O basic _finddata_t estrutura inclui os seguintes elementos:

  • unsigned attrib
    Atributo de arquivo.

  • time_t time_create
    Hora de criação do arquivo (–1L para sistemas de arquivos FAT).Essa hora será armazenada no formato UTC.Para converter a hora local, use localtime_s.

  • time_t time_access
    Hora do último acesso ao arquivo (–1L para sistemas de arquivos FAT).Essa hora será armazenada no formato UTC.Para converter a hora local, use localtime_s.

  • time_t time_write
    Hora da última gravação ao arquivo.Essa hora será armazenada no formato UTC.Para converter a hora local, use localtime_s.

  • _fsize_t size
    Tamanho do arquivo em bytes.

  • char name[ _MAX_PATH]
    Nome terminada por caractere nulo de correspondentes de arquivo ou diretório, sem o caminho.

Em sistemas de arquivos que não suportam a criação e os horários dos últimos acessos de um arquivo, como, por exemplo, o sistema FAT, o time_create e time_access campos são sempre –1L.

_MAX_PATH é definido em Stdlib.h como 260 bytes.

Não é possível especificar atributos de destino (como _A_RDONLY) para limitar a operação de localização.Esses atributos são retornados a attrib campo o _finddata_t estruturar e pode ter os seguintes valores (definido em IO.h).Os usuários não devem depender que são os únicos valores possíveis para o attrib campo.

  • _A_ARCH
    Arquivamento.Defina sempre que o arquivo é alterado e desmarcado pela BACKUP comando.Valor: 0x20.

  • _A_HIDDEN
    Arquivo oculto.Não é geralmente visto com o comando DIR, a menos que você use o /AH opção.Retorna informações sobre os arquivos normais e arquivos que tenham esse atributo.Valor: 0x02.

  • _A_NORMAL
    Normal.O arquivo tem não outros atributos definido e podem ser lido ou gravados sem restrição.Valor: 0x00.

  • _A_RDONLY
    Somente leitura.Não é possível abrir o arquivo para gravação e não é possível criar um arquivo que tem o mesmo nome.Valor: 0x01.

  • _A_SUBDIR
    Subdiretório.Valor: 0x10.

  • _A_SYSTEM
    Arquivo de sistema.Não é normalmente visto com o DIR de comando, a menos que o /A ou /A:S opção é usada.Valor: 0x04.

_findnextLocaliza o próximo nome, se houver, que corresponde a filespec argumento especificado em uma chamada anterior a _findfirst.O fileinfo argumento deve apontar para uma estrutura inicializada por uma chamada anterior para _findfirst.Se uma correspondência for encontrada, o fileinfo o conteúdo de estrutura é alterado conforme descrito anteriormente.Caso contrário, ele é deixado inalterado._findcloseFecha o identificador de pesquisa especificada e libera todos os respectivos recursos para ambos _findfirst e _findnext.O identificador retornado por um _findfirst ou _findnext primeiro deve ser passado para _findclose, antes que as operações de modificação, como a exclusão, podem ser executadas nos diretórios que formam os caminhos passados para eles.

Você pode aninhar o _find funções.Por exemplo, se uma chamada para _findfirst ou _findnext localiza o arquivo que é um subdiretório, uma nova pesquisa possa ser iniciado com outra chamada para _findfirst ou _findnext.

_wfindfirste _wfindnext são versões de caractere largo de _findfirst e _findnext.O argumento da estrutura das versões caractere largo tem o _wfinddata_t o tipo de dados, que é definido em IO.h e Wchar.h.Os campos desse tipo de dados são iguais da _finddata_t o tipo de dados, exceto que, em _wfinddata_t o campo nome é do tipo wchar_t em vez do tipo char.Caso contrário, _wfindfirst e _wfindnext se comportam de forma idêntica para _findfirst e _findnext.

_findfirste _findnext usar o tipo de tempo de 64 bits.Se você precisar usar o tipo de hora antiga de 32 bits, você pode definir _USE_32BIT_TIME_T.As versões dessas funções que têm o 32 sufixo em seus nomes usam o tipo de tempo de 32 bits e aqueles com o 64 sufixo usam o tipo de tempo de 64 bits.

Funções _findfirst32i64, _findnext32i64, _wfindfirst32i64, e _wfindnext32i64 também se comportam exatamente para as versões do tipo de tempo de 32 bits dessas funções, exceto que eles usam e tamanhos de arquivo de 64 bits de retorno.Funções _findfirst64i32, _findnext64i32, _wfindfirst64i32, e _wfindnext64i32usar o tipo de tempo de 64 bits, mas usar tamanhos de arquivo de 32 bits.Essas funções usarem variações adequadas da _finddata_t em que os campos têm tipos diferentes para o tempo e o tamanho do arquivo do tipo.

_finddata_té realmente uma macro que é avaliada como _finddata64i32_t (ou _finddata32_t se _USE_32BIT_TIME_T está definido).A tabela a seguir resume as variações na _finddata_t:

Estrutura

Tipo de tempo

Tipo de tamanho de arquivo

_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).

Exemplo

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

Consulte também

Referência

Chamadas do sistema