Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
portuguese
Composition Setup
import.css=/download/attachments/6062824/tecnologia.css

Pagetitle
Directory
Directory

Função: Directory

...

Retorna um array com o conteúdo de um diretório.

...


Consulte a função ADir para outras funcionalidades.

Aviso
titleAtenção!
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
collapsefalse
Directory( < cDirEsp >, [ cAtributos ], [ uParam1 ], [ lConvertCase ], [ nTypeOrder ] )

Parâmetros

 

Directory ( < cDirEsp>, [ cAtributos], [ xParam3], [ lCaseSensitive] ) --> aRet

...

Nome

Tipo

Descrição

Obrigatório

Referência

cDirEsp

...

caractere

Indica o diretório

...

para pesquisa.
São permitidos caracteres do tipo curinga ( *.* )

  • 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 tipos de arquivos/diretórios devem ser incluídos no array.
É 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
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

 

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.
  • O diretório especificado, no parâmetro <cDirEsp> , pode estar na estação (Remote) ou no servidor, porém, é necessário obedecer as definições de Path Absoluto/Relativo de acesso.
  • 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 Directory.ch, que contém os #DEFINES para os subarrays subscripts.
Bloco de código
languagecpp
themeEclipse
titleExemplo 1
linenumberstrue
collapsefalse
User Function Exemplo1()
  
são permitidos na especificação de arquivos. Caso esse parâmetro não seja especificado, o valor padrão é *.*.
X 
cAtributosCaracterIndica 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.  
xParam3NuloCompatibilidade. Deve ser informado o valor nulo ( NIL )  
lCaseSensitiveLógicoIndica 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.  
Nota
titleAtenção!

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

Tabela A - Atributos de Directory() 

AtributoSignificado
HIncluir arquivos ocultos
SIncluir arquivos de sistema
DIncluir diretórios
VProcura 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çãometasímbolodirectry.ch
 1cNomeF_NAME
 2cTamanhoF_SIZE
 3dDataF_DATE
 4cHoraF_TIME
 5cAtributosF_ATT

 

 

Bloco de código
themeEclipse
languagecpp
titleExemplo
linenumberstrue
Local aFiles := {}
  
Local nX
  local nCount
:= Len( aFiles )

  aFiles := Directory("c:\garbage\*.*", "D")
For
  nCount := Len( aFiles )
  For nX := 1 to nCount 
      
ConOut('Arquivo: ' + aFiles[nX,1] + ' - Size: ' + AllTrim(Str(aFiles[nX,2])) )
  Next nX
Bloco de código
themeEclipse
languagecpp
titleExemplo
linenumberstrue
#INCLUDE "Directry.ch"

Return

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

User Function 
)

 

 
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server

 

 

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 


Veja também

...