Procurar
Palavras-chaves
Últimos assuntos
Tópicos mais visitados
Lendo diretórios em PHP
Página 1 de 1
Lendo diretórios em PHP
O código é simples, segue:
opendir (MEUDIR, "/home/LOGIN/www/meudir");
@pegoodir = readdir(MEUDIR);
closedir (MEUDIR);
Explicando o código:
-
opendir (MEUDIR, "/home/LOGIN/www/meudir");
- Este código abre o diretório especificado
-
@pegoodir = readdir(MEUDIR);
- Neste, coloco todos os arquivos do diretório em um vetor (o @pegoodir é um vetor).
-
closedir (MEUDIR);
- Encerro a leitura do diretório
1. Lendo os arquivos do diretório e imprimindo seus dados
Irei utilizar o comando
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.
#!/usr/bin/perl
print "Content-type: text/html"; # Digo ao script o conteúdo do documento
# abro o diretório
opendir (MEUDIR, "/home/LOGIN/www/meudir");
@pegoodir = readdir(MEUDIR);
closedir (MEUDIR);
# já peguei todos os dados e armazenei no vetor, fecho o diretório
foreach (@pegoodir) {
$dados = $_; # como só existe uma coluna no vetor, utilizei o $_ para pegar esta coluna.
if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só . (ver explicação abaixo)
if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..
open (MEUFILE, "/home/LOGIN/www/meudir/$dados");
@minhas_linhas = <MEUFILE>;
close (MEUFILE);
print "<b>Arquivo $dados</b>: @minhas_linhas
"; # imprimo os arquivos do diretório.
} # fecho o foreach
Agora explicando o comando:
if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só .
if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..
Um diretório é formado pela seguinte sequencia:
. # este significa a volta a pasta raiz
.. # este volta para a pasta anterior
a # pasta de nome a
b # pasta de nome b
c # pasta de nome c
a.EXT # arquivo a.ext
b.EXT # arquivo b.ext
c.EXT # arquivo c.ext
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
next;
opendir (MEUDIR, "/home/LOGIN/www/meudir");
@pegoodir = readdir(MEUDIR);
closedir (MEUDIR);
Explicando o código:
-
opendir (MEUDIR, "/home/LOGIN/www/meudir");
- Este código abre o diretório especificado
-
@pegoodir = readdir(MEUDIR);
- Neste, coloco todos os arquivos do diretório em um vetor (o @pegoodir é um vetor).
-
closedir (MEUDIR);
- Encerro a leitura do diretório
1. Lendo os arquivos do diretório e imprimindo seus dados
Irei utilizar o comando
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.
#!/usr/bin/perl
print "Content-type: text/html"; # Digo ao script o conteúdo do documento
# abro o diretório
opendir (MEUDIR, "/home/LOGIN/www/meudir");
@pegoodir = readdir(MEUDIR);
closedir (MEUDIR);
# já peguei todos os dados e armazenei no vetor, fecho o diretório
foreach (@pegoodir) {
$dados = $_; # como só existe uma coluna no vetor, utilizei o $_ para pegar esta coluna.
if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só . (ver explicação abaixo)
if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..
open (MEUFILE, "/home/LOGIN/www/meudir/$dados");
@minhas_linhas = <MEUFILE>;
close (MEUFILE);
print "<b>Arquivo $dados</b>: @minhas_linhas
"; # imprimo os arquivos do diretório.
} # fecho o foreach
Agora explicando o comando:
if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só .
if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..
Um diretório é formado pela seguinte sequencia:
. # este significa a volta a pasta raiz
.. # este volta para a pasta anterior
a # pasta de nome a
b # pasta de nome b
c # pasta de nome c
a.EXT # arquivo a.ext
b.EXT # arquivo b.ext
c.EXT # arquivo c.ext
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
next;
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Qua 16 Nov - 16:14 por fernandosena
» Segurança e redes sem fio
Qua 16 Nov - 16:11 por fernandosena
» Nokia lançará tablet com Windows 8 em junho de 2012, diz executivo
Qua 16 Nov - 16:05 por fernandosena
» Empresa registra aumento de 472% no número de vírus para Android
Qua 16 Nov - 16:03 por fernandosena
» YouTube investe US$ 100 milhões em vídeos
Sex 7 Out - 8:34 por fernandosena
» Todos os títulos futuros da Microsoft devem trazer suporte para o Kinect
Sex 7 Out - 8:25 por fernandosena
» Resident Evil 5 - PC
Sex 7 Out - 8:22 por fernandosena
» Novo trailer de Assassin’s Creed Revelations é lançado
Sex 7 Out - 8:12 por fernandosena
» Biostar apresenta nova placa-mãe que permite acesso remoto via smartphones
Sex 7 Out - 8:08 por fernandosena