aDir [AS]
Autor: Eurai Criado: 03/11/2024 Atualizado: 15/11/2024Descrição
Preenche uma série de arrays com informações de arquivos e diretórios (nomes de arquivos, tamanhos, datas, horas e atributos. |
Sintaxe
Directory( [cEspecArq], [@aNomesArq], [@aTamanhos], [@aDatas], [@aHoras], [@aAtributos], [lChangeCase] ) |
Parâmetros
Par | Nome | Tipo | Descrição | Default | Obg | Ref |
01 |
cEspecArq | Caracter |
Indica o path e máscara de arquivos a ser pesquisado. Para isso, pode-se incluir caracteres do tipo curinga * e ?, como também se referenciar ao diretório ou path. Caso nada seja especificado, o parâmetro assumirá como padrão *.*. A função irá listar os 10.000 primeiros arquivos com a mascará indicada, caso necessário o arquivo 10001 em diante, informar ":10000" por exemplo para os proximos 10.000 arquivos (Comportamento em build superior a 7.00.131227-20160630) | |||
02 | aNomesArq | Array | Indica o array que será preenchido com os nomes de arquivos que correspondem a . Cada elemento contém o nome do arquivo e extensão no formato string em maiúsculo | X | ||
03 | aTamanhos | Array | Indica o array que será preenchido com os tamanhos dos arquivos correspondentes no array . Cada elemento será numérico | X | ||
04 | aDatas | Array | Indica o array que será preenchido com as datas dos arquivos correspondentes no array . Cada elemento será do tipo data (D) | X | ||
05 | aHoras | Array | Indica o array que será preenchido com as horas dos arquivos correspondentes no array . Cada elemento preenchido, contém uma string no formato hora, minutos e segundos (hh:mm:ss). | X | ||
06 | aAtributos | Array | Indica o array que será preenchido com os atributos dos arquivos correspondentes no array . Cada elemento é uma string. Caso seja especificado, os arquivos de diretório, sistema e escondidos são inclusos, assim como os arquivos normais. Mas se não for especificado, somente os arquivos normais serão inclusos. | |||
07 | lChangeCase | Logical | Se verdadeiro (.T.), nomes de arquivos e pastas serão convertidos para letras minúsculas; caso contrário, falso (.F.), não será feito nenhum ajuste no nome do arquivo informado. Valor padrão (.T.). Veja maiores informações em Observações | |||
Retorno
Retorno | Tipo | Descrição |
nRet | Númerico |
Retorna a quantidade de arquivos encontrados que correspondem à máscara de pesquisa no diretório especificado |
Exemplo
#INCLUDE "TOTVS.CH" User Function Directory() Local aFiles := {}
Local aSizes := {} Local nX := 0 aFiles := ADir( cPathPDF + "\*.pdf*", aFiles, aSizes ) For nX := 1 to Len( aFiles ) Conout('Arquivo: ' + aFiles[nX] + ' - Size: ' + AllTrim(Str(aSizes[nX])) ) Next nX Return( Nil )
Resultado
Informações adicionais
Listar um diretório com muitos arquivos pode causar problemas de desempenho no Appserver, já que todos as suas informações serão transportados para um Array. A proporção é de, em média, 100MBs em apenas uma execução a cada 100.000 arquivos |
Diretórios: Caso o parâmetro aAtributos seja especificado e cEspecArq seja especificado como *.*, os diretórios serão incluídos em aNomesArq. No array aAtributos, os diretórios são indicados com um valor atributo de "D." Se ADir() for executada dentro de um subdiretório, as duas primeiras entradas do array aNomesArq são "." e "..", os "alias" dos diretórios corrente e raiz. A data e hora da última atualização são informadas para diretórios, mas o tamanho de um diretório é sempre zero). |
Esta função foi mantida por compatibilidade, e definida como obsoleta. aDir() foi substituída pela função Directory(), que retorna todas as informações do(s) arquivo(s) em um array multidimensional |
O parâmetro opcional lChangeCase foi introduzido a partir do build 7.00.131227A pois em sistemas LINUX/UNIX, existe a diferenciação entre maiúsculo e minúsculo em nomes de arquivos ou pastas. Quando este parâmetro for informado, terá prioridade sobre comportamento de Case Sensitive definido pelas chaves de ini CASESENSITIVE ou SERVERTYPE. Porem, quando não especificado o parâmetro, o valor padrão (.T.) fica condicionado ao que está configurado nessas chaves |
|
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎