Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 10 Próxima »

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éria 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 um ou mais dos caracteres H, S, D e V. 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.

 

 

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 (<cDirSpec>). Para mais detalhes, consulte a tabela B na área Observações.

Observações

Atenção!

Quando executado via SmartClient HTML, o sistema não tem acesso aos arquivos da estação/cliente (Remote).

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.

Atenção!

A função tem uma limitação de apresentar apenas os primeiros 10.000 arquivos, sendo qualquer excedente ignorado.

 

Tabela A - Atribuições de Directory()

Atribuito

Significado

H

Incluir arquivos ocultos

S

Incluir arquivos de sistema

D

Incluir diretórios

V

Procura pelo volume DOS e exclui outros arquivos

Importante
Arquivos normais são sempre incluídos na pesquisa, a não ser que "V" seja especificado.

Tabela B - Estrutura dos subarrays

Posição

Meta simbolo

directory.ch

1

cNome

F_NAME

2

cTamanho

F_SIZE

3

dData

F_DATE

4

cHora

F_TIME

5

cAtributos

F_ATT

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

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.

Exemplos

Exemplo 1
User Function Exemplo1()
  Local aFiles := {}
  Local nX
  local nCount := Len( aFiles )
  aFiles := Directory("c:\garbage\*.*", "D")
  For nX := 1 to nCount 
      ConOut('Arquivo: ' + aFiles[nX,1] + ' - Size: ' + AllTrim(Str(aFiles[nX,2])) )
  Next nX
Return


#INCLUDE "Fileio.ch"
User Function Exemplo2()
  local F_NAME
  aDirectory := DIRECTORY("*.*", "D")
  F_NAME := Len(aDirectory)
  AEVAL(aDirectory, {|aFile| CONOUT(aFile[F_NAME])} )
Return

 

Veja também

  • Sem rótulos