Árvore de páginas

Preenche uma série de arrays com informações de arquivos e diretórios (nomes de arquivos, tamanhos, datas, horas e atributos).

Sintaxe

ADir([cEspecArq], [@aNomesArq], [@aTamanhos], [@aDatas], [@aHoras], [@aAtributos], [lChangeCase] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cEspecArq

caractere

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)



aNomesArq

vetor

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

aTamanhos

vetor

Indica o array que será preenchido com os tamanhos dos arquivos correspondentes no array . Cada elemento será numérico.


X

aDatas

vetor

Indica o array que será preenchido com as datas dos arquivos correspondentes no array . Cada elemento será do tipo data (D)


X

aHoras

vetor

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

aAtributos

vetor

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.


X

lChangeCase

lógico

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

Nome

Tipo

Descrição

nRet

numérico

Retorna a quantidade de arquivos encontrados que correspondem à máscara de pesquisa no diretório especificado.

Observações

  • 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.


Atenção!

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.

Exemplos

User Function adir()
  Local aFiles := {} // O array receberá os nomes dos arquivos e do diretório
  Local aSizes := {} // O array receberá os tamanhos dos arquivos e do diretorio
  Local nX
  ADir("c:\garbage\*.*", aFiles, aSizes)
  // Exibe dados dos arquivos
  nCount := Len( aFiles )
  For nX := 1 to nCount
    ConOut( 'Arquivo: ' + aFiles[nX] + ' - Size: ' + AllTrim(Str(aSizes[nX])) )
  Next nX
  ADir("c:\garbage\*.*:10000", aFiles, aSizes) //proximos 10 mil arquivos
  For nX := 1 to nCount
    ConOut( 'Arquivo: ' + aFiles[nX] + ' - Size: ' + AllTrim(Str(aSizes[nX])) )
  Next nX
Return

Abrangência

TOTVS Application Server

Veja também

  • Sem rótulos