Olá! Monday, 26 de June de 2017.



Dicas CódigoFonte.net
Tuesday, 06 de January de 2004

Lendo diretórios em PHP

Olá galera, tudo bem?

Como a primeira matéria/dica em CGI-Perl, irei ensinar hoje a como ler diretórios e abrir arquivos nos mesmos.

O código é simples, segue:

  1.  opendir (MEUDIR, "/home/LOGIN/www/meudir");
  2. @pegoodir = readdir(MEUDIR);
  3. closedir (MEUDIR);  


Explicando o código:

-
  1.  opendir (MEUDIR, "/home/LOGIN/www/meudir");  

- Este código abre o diretório especificado

-
  1.  @pegoodir = readdir(MEUDIR);  

- Neste, coloco todos os arquivos do diretório em um vetor (o @pegoodir é um vetor).

-
  1.  closedir (MEUDIR);  

- Encerro a leitura do diretório

1. Lendo os arquivos do diretório e imprimindo seus dados

Irei utilizar o comando
  1.  foreach  
para pegar os nomes dos arquivos no vetor e abrí-los.

A seguir o código e a explicação da utilização parte a parte.

  1. #!/usr/bin/perl
  2.  
  3. print "Content-type: text/html"; # Digo ao script o conteúdo do documento
  4.  
  5. # abro o diretório
  6. opendir (MEUDIR, "/home/LOGIN/www/meudir");
  7. @pegoodir = readdir(MEUDIR);
  8. closedir (MEUDIR);
  9. # já peguei todos os dados e armazenei no vetor, fecho o diretório
  10.  
  11. foreach (@pegoodir) {
  12. $dados = $_; # como só existe uma coluna no vetor, utilizei o $_ para pegar esta coluna.
  13.  
  14. if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só . (ver explicação abaixo)
  15. if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..
  16.  
  17. open (MEUFILE, "/home/LOGIN/www/meudir/$dados");
  18. @minhas_linhas = <MEUFILE>;
  19. close (MEUFILE);
  20.  
  21. print "<b>Arquivo $dados</b>: @minhas_linhas
  22.  
  23. "; # imprimo os arquivos do diretório.
  24.  
  25. } # fecho o foreach
  26.  


Agora explicando o comando:

  1.  if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só .
  2. if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..  


Um diretório é formado pela seguinte sequencia:

  1.  
  2. . # este significa a volta a pasta raiz
  3. .. # este volta para a pasta anterior
  4. a # pasta de nome a
  5. b # pasta de nome b
  6. c # pasta de nome c
  7. a.EXT  # arquivo a.ext
  8. b.EXT # arquivo b.ext
  9. c.EXT # arquivo c.ext
  10.  


Utilizei o código porque, sem ele, o script intenderá o dado "." e ".." como arquivos e irá abrí-los, demorando na execução do sistema.

Inserindo este comando
  1.  next;  
, pulo para a próxima ação, excluindo a atual.

Bom, por hoje é só.

Até mais galera.

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010