Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Pagetitle
Directory
Directory

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éria de arrays existentes passados por referência
Consulte a função ADir para outras funcionalidades.

Aviso
titleAtenção!
Esta função só pode ser utilizada no SmartClient HTML (WebApp), utilizando o WegAgent, mais informações aqui.

Sintaxe

Bloco de código
collapsefalse
Directory( < cDirEsp >, [ cAtributos ], [ uParam1 ], [ lCaseSensitivelConvertCase ], [ 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,

X

 

para pesquisa.
São permitidos caracteres do tipo curinga

são permitidos na especificação de arquivos. Caso esse parâmetro não seja especificado, o valor padrão é *.*.

( *.* )

  • Caso especificado um path sem a unidade de disco, serão considerados arquivos e diretórios contidos no AppServer, exemplos:

    // Retorna arquivos da raiz do System do AppServer
    aFiles := aFiles := Directory("/*.*", "D")

    // Retorna arquivos do diretorio de Spool do AppServer
    aFiles := aFiles := Directory("/spool/*.*", "D")

  • Caso esterificado um path com unidade de disco, serão considerados arquivos e diretórios contidos na estação de trabalho em que o SmartClient está sendo executado, exemplo:

    // Exemplo para Windows
    aFiles := Directory(
    "c:\tmp\*.*")

    // Exemplo para Linux (obrigatório uso do l:)
    aFiles := Directory(
    "l:/tmp/*.*")

X


cAtributos

caractere

Indica quais

arquivos com atributos especiais

tipos de arquivos/diretórios 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

Aviso
titleAtenção!
Quando executado via SmartClient HTML, o sistema não tem acesso aos arquivos da estação/cliente (Remote).
Aviso
titleAtençã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.

 

 


É permitido concatenar atributos.

No exemplo abaixo retornamos Diretórios + Arquivos de Sistema + Arquivos entre as posições 10.000 e 20.000:

  cAtributos := "D" // Inclui diretorios
  cAtributos += "S" // Inclui arquivos do sistema
  cAtributos += ":10000" // Lista arquivos/diretorios a partir do arquivo de nr 10.000
  aFiles := Directory("c:\tmp\10kk\*.*", cAtributos)

Para mais detalhes, consulte a Tabela A abaixo:

Informações
titleTabela A

...

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:

Dada exclusão dos demais tipos de arquivos o parâmetro V deve ser usado com cautela. 

:N

(erro) A partir da build 7.00.131227A-20160630, visando economia de recursos, a função Directory esta limitada ao retorno de 10.000 itens.

Caso necessário visualizar itens que tenham uma "contagem" superior à 10.000 é possível utilizar o Atributo (dois pontos), ele trará itens de uma determinada posição até o limite de +10.000, veja o exemplo:

// Lista arquivos a partir da posição 10.000 (limitado a +10.000)
cAtributos := ":10000"
 
aFiles := Directory("c:\tmp\10kk\*.*", cAtributos)
...
// Lista arquivos a partir da posição 20.000 (limitado a +10.000)

cAtributos := ":20000"
 
aFiles := Directory("c:\tmp\10kk\*.*", cAtributos)
...



uParam1

numérico

Parâmetro de compatibilidade, não deve ser preenchido.



lConvertCase

lógico

Se verdadeiro (.T.), os nomes de arquivos presentes serão retornados todos em MAIÚSCULO.

Caso falso (.F.), os nomes de arquivos presentes são retornados como estão 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.

Para mais detalhes, consulte a Tabela B abaixo:

Informações
titleTabela B

Parâmetro

Tipo de ordenação

1

Ordenar por nome do arquivo

2

Ordenar por data do arquivo

3

Ordenar por tamanho do arquivo



Retorno

Nome

Tipo

Descrição

aRet

vetor

Retorna um array que contém informações sobre cada arquivo

...

/ diretório que atenda aos requisitos
descritos no parâmetro cAtributos, passado na chamada da função. 

Tabela C (abaixo), descreve a estrutura do array de retorno:
Informações
titleTabela C

Posição

Conteúdo

1

Nome do arquivo

2

Tamanho

3

Data

4

Hora

5

Atributos, exemplo A=Arquivo, D=Diretório

Exemplos

Bloco de código
languagecpp
themeEclipse
titleExemplo 1
linenumberstrue
collapsefalse
User Function Exemplo1()
  Local aFiles := {}
  Local nX
  local nCount := Len( aFiles )
  aFiles := Directory("c:\garbage\*.*", "D")
  nCount :=  ForLen( aFiles )
  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_NAME1])} )
Return

User Function Exemplo3()
  Local aFiles := {}
  local nCount

 

Veja também

  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 


Veja também