Histórico da Página
...
Pagetitle | ||||
---|---|---|---|---|
|
Cria um Retorna 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
Consulte a função ADir para outras funcionalidades.
Aviso | ||
---|---|---|
| ||
Esta função não opera no SmartClient HTML, pois quando executado via navegador o sistema não tem acesso aos arquivos da estação de trabalho. |
Sintaxe
Bloco de código | ||
---|---|---|
| ||
Directory( < cDirEsp >, [ cAtributos ], [ uParam1 ], [ lCaseSensitive ], [ nTypeOrder ] ) |
...
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,
| X | ||||||||||||||||||
cAtributos | caractere | Indica quais tipos de arquivos/diretórios devem ser incluídos no array.
Para mais detalhes, consulte a Tabela A abaixo:
| |||||||||||||||||||
uParam1 | numérico | Parâmetro de compatibilidade. Passar Nil, não deve ser preenchido. | |||||||||||||||||||
lCaseSensitive | lógico | Indica se, verdadeiro (.T.), o nome do arquivo será transformado para letra maiúscula; | |||||||||||||||||||
nTypeOrder | numérico | Indica o tipo de ordenação do resultado da função. AppServer superiores a 7.00.131227A.
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
aRet | vetor | Retorna um array que contém informações sobre cada arquivo que atenda o parâmetro descrito em cAtributos. |
Observações
Aviso | ||
---|---|---|
| ||
Quando executado via SmartClient HTML, o sistema não tem acesso aos arquivos da estação/cliente (Remote). |
Aviso | ||
---|---|---|
| ||
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, 300MBs em apenas uma sessão a cada 100.000 arquivos. Por esse motivo, o comportamento da Directory foi alterada nos builds Appserver superiores a 7.00.131227A-20130404, limitada a 10.000 arquivos por chamada. Consulte abaixo maiores detalhes. |
Aviso | ||
---|---|---|
| ||
A função tem uma limitação de apresentar apenas os primeiros 10.000 arquivos, sendo qualquer excedente ignorado. |
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
...
a Tabela C abaixo:
|
Importante
Arquivos normais são sempre incluídos na pesquisa, a não ser que "V" seja especificado.
...
|
- 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
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 |