Á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/3279126062824/newLayouttecnologia.css

Pagetitle
Directory
Directory

Função: Directory

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.

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

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 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 ], [ lConvertCase ], [ nTypeOrder ] )

Parâmetros

...

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.

 

Tabela A - Atributos de Directory() 

Bloco de código
languagecpp
themeEclipse
titleExemplo 1
linenumberstrue
collapsefalse
User Function Exemplo1()
  Local
. 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.
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
//Exemplo 1Local
 aFiles := {}
 
//
 
O
Local 
array
nX
 
receberá
 
os
local 
dados
nCount
 
dos
 
arquivosLocal nXaFiles
aFiles := Directory("c:\garbage\*.*", "D")
//

 
Apresenta
 
os dados dos arquivosnCount
nCount := Len( aFiles )
For

  For nX := 1 to nCount 
      ConOut(
'Arquivo: ' + aFiles[nX,1] + ' - Size: ' + AllTrim(Str(aFiles[nX,2])) )
Next nX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Exemplo 2//Através do exemplo abaixo, obtemos no array aDirectory todos os diretórios no ambiente do servidor a partir do path atual. #INCLUDE "Directry.ch" aDirectory := DIRECTORY("*.*","D") AEVAL( aDirectory, {|aFile| CONOUT(aFile[F_NAME])} )
Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
AEVal, ADir

  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 


Veja também