Cria um array bidimensional com o conteúdo de um diretório.
Para isso, retorna informações a respeito dos arquivos no diretório corrente ou especificado.
Essa função é semelhante a ADir(), porém, retorna um único array ao invés de adicionar valores a uma série de arrays existentes passados por referência.
Sintaxe
Directory( < cDirEsp >, [ cAtributos ], [ uParam1 ], [ lCaseSensitive ], [ nTypeOrder ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cDirEsp | caractere | Indica o diretório que será pesquisado e os arquivos que serão apresentados. Além disso, caracteres do tipo curinga são permitidos na especificação de arquivos. Caso esse parâmetro não seja especificado, o valor padrão é *.*. | X | |
cAtributos | caractere | Indica quais arquivos com atributos especiais devem ser incluídos no array. Esse parâmetro consiste em uma string que contém, por exemplo, um ou mais dos caracteres H, S, D e V (alem de : para indicar arquivos a ser exibidos). Para mais detalhes, consulte a Tabela A na área Observações. | ||
uParam1 | numérico | Parâmetro de compatibilidade. Passar Nil. | ||
lCaseSensitive | lógico | Indica se, verdadeiro (.T.), o nome do arquivo será transformado para letra maiúscula; caso contrário, falso (.F.), o nome do arquivo será retornado conforme escrito no disco rígido. | ||
nTypeOrder | numérico | Indica o tipo de ordenação do resultado da função. Apenas em build Appserver superiores a 7.00.131227A. |
Retorno
Nome | Tipo | Descrição |
---|---|---|
aRet | vetor | Retorna um array de subarrays, sendo que cada subarray contém informações sobre cada arquivo que atenda o parâmetro (<cDirEsp>). Para mais detalhes, consulte a tabela B na área Observações. |
Observações
Atenção!
Atenção!
Atenção!
Tabela A - Atributos
Atribuito | Significado |
H | Incluir arquivos ocultos |
S | Incluir arquivos de sistema |
D | Incluir diretórios |
V | Procura pelo volume DOS e exclui outros arquivos |
:N | Informa caso necessite o arquivo 10001 em diante. Ex: informar ":10000" por exemplo para os proximos 10.000 arquivos (Comportamento em build superior a 7.00.131227-20160630). Esse parâmetro dever ser obrigatoriamente o ultimo. |
Importante
Arquivos normais são sempre incluídos na pesquisa, a não ser que "V" seja especificado.
Tabela B - Retorno das informações
Estrutura dos sub-arrays
Posição | Conteúdo |
1 | Nome do arquivo |
2 | Tamanho |
3 | Data |
4 | Hora |
5 | Atributos, exemplo A=Arquivo, D=Diretório |
- Caso seja especificado um path sem a unidade de disco, o mesmo será considerado no ambiente do servidor, a partir do RootPath do ambiente (caso o path comece com \ ou /), ou a partir do StartPath do ambiente (caso o path não seja iniciado com \ ou /).
- Quando um path absoluto é especificado (com unidade de disco preenchida), a função será executada na estação em que o SmartClient está em execução.
- O tipo de ordenação pode ser definido conforme tabela:
Tabela C - Ordenação
Parâmetro | Tipo de ordenação |
1 | Ordenar por nome do arquivo |
2 | Ordenar por data do arquivo |
3 | Ordenar por tamanho do arquivo |
- Essa função pode ser utilizada para realizar operações em conjuntos de arquivos. Ao utilizar essa função em conjunto com AEVal(), é possível definir um bloco de código que pode ser aplicado a todos os arquivos que atendam ao parâmetro especificado.
- Para tornar as referências aos vários elementos de cada subarray de arquivo mais legíveis, a linguagem AdvPL fornece o arquivo header Fileio.ch, que contém os #DEFINES para os subarrays subscripts.
- Em caso de a função ser listada em uma pasta onde contenha mais de 10.000 arquivos, é necessário usar a função de atributos para capturar os demais arquivos da pasta, conforme
Exemplos
User Function Exemplo1() Local aFiles := {} Local nX local nCount aFiles := Directory("c:\garbage\*.*", "D") nCount := Len( aFiles ) For nX := 1 to nCount ConOut('Arquivo: ' + aFiles[nX,1] + ' - Size: ' + AllTrim(Str(aFiles[nX,2])) ) Next nX Return User Function Exemplo2() local F_NAME aDirectory := DIRECTORY("*.*", "D") F_NAME := Len(aDirectory) AEVAL(aDirectory, {|aFile| CONOUT(aFile[1])} ) Return User Function Exemplo3() Local aFiles := {} local nCount Local nX local flagparameters := "D:10000" //lista os arquivos entre 10.000 e 20.000, inclusive diretórios aFiles := Directory("c:\tmp\10kk\*.*", flagparameters, 1) nCount := Len( aFiles ) For nX := 1 to nCount ConOut('Arquivo: ' + aFiles[nX,1] + ' - Size: ' + AllTrim(Str(aFiles[nX,2])) ) Next nX Return