Os utilitários de Folder(Pasta) e File(Arquivo) são classes convenientes para ajudar você a escrever/inserir mudanças em arquivos; listar arquivos em uma pasta e outro diretório comum em tarefas relacionadas.
Garanta que as classes estão sendo carregadas usando App::uses()
:
<?php
App::uses('Folder', 'Utility');
App::uses('File', 'Utility');
Aqui criamos uma nova instancia de pasta
<?php
$dir = new Folder('/path/to/folder');
e uma busca por todos arquivos .ctp nesta pasta usando regex:
<?php
$files = $dir->find('.*\.ctp');
Agora nós podemos percorrer os arquivos e ler ou escrever/adicionar a o conteudo ou simplesmente deleter o arquivo:
<?php
foreach ($files as $file) {
$file = new File($dir->pwd() . DS . $file);
$contents = $file->read();
// $file->write('I am overwriting the contents of this file');
// $file->append('I am adding to the bottom of this file.');
// $file->delete(); // I am deleting this file
$file->close(); // Be sure to close the file when you're done
}
<?php
// Cria uma nova pasta com permissão 0755
$dir = new Folder('/path/to/folder', true, 0755);
Caminho para a pasta atual. Folder::pwd()
irá retornar a mesma
informação.
Quer ou não os resultados da lista devem ser classificados por nome.
Mode para ser usado quando criar a pasta. Padrão 0755
. Isto não vale
para ambientes Windows.
string
Retorna $path com $element adicionado, com a barra correta:
$path = Folder::addPathElement('/a/path/for', 'testing');
// $path igual /a/path/for/testing
$element também pode ser um array:
$path = Folder::addPathElement('/a/path/for', array('testing', 'another'));
// $path igual /a/path/for/testing/another
Novo na versão 2.5: $element aceita um array como parâmetro
string
Muda o diretório para $path. Retorna falso a o falhar:
<?php
$folder = new Folder('/foo');
echo $folder->path; // Prints /foo
$folder->cd('/bar');
echo $folder->path; // Prints /bar
$false = $folder->cd('/non-existent-folder');
boolean
Muda o mode(Permissão) de uma estrutura de diretórios recursivamente. Isso inclui mudança no mode(Permissão) dos arquivos também:
<?php
$dir = new Folder();
$dir->chmod('/path/to/folder', 0755, true, array('skip_me.php'));
boolean
Copia um diretório recursivamente. O unico parâmetro $options pode ser um caminho para copiar ou um array de opções:
<?php
$folder1 = new Folder('/path/to/folder1');
$folder1->copy('/path/to/folder2');
// Irá colocar a folder1 e seu conteudo dentro da folder2
$folder = new Folder('/path/to/folder');
$folder->copy(array(
'to' => '/path/to/new/folder',
'from' => '/path/to/copy/from', // Realizara um cd() para fazer
'mode' => 0755,
'skip' => array('skip-me.php', '.git'),
'scheme' => Folder::SKIP, // Ignora diretórios/arquivos que existam.
'recursive' => true
));
Existem 3 tipos schemes suportados:
Folder::SKIP
ignora copiando/movendo arquivos e diretórios caso exista
na pasta de destino.
Folder::MERGE
mescla os diretórios destinatario/destino. Arquivos do
diretório de origem irá substituir os arquivos no diretório de destino. Os
conteudos serão mesclados.
Folder::OVERWRITE
sobreescreve arquivos existentes e diretórios no
diretório de destino com os arquivos de origem. Se ambos os diretórios
possuem um mesmo sub-diretório o sub-diretório de origem sera removido
e o de destino entrara no lugar dele.
Alterado na versão 2.3: O merge, skip e overwrite schemes foram adicionados para o copy()
string
Retorna o tipo de barras correto $path (’\’ para Windows e ‘/’ para outros).
- rtype
boolean
Cria uma estrutura de diretorios recursivamente. Pode ser usado para criar dentro de estruturas como /foo/bar/baz/shoe/horn:
<?php
$folder = new Folder();
if ($folder->create('foo' . DS . 'bar' . DS . 'baz' . DS . 'shoe' . DS . 'horn')) {
// Pastas criadas com sucesso.
}
boolean
Remove diretórios recursivamente se o sistema permitir:
<?php
$folder = new Folder('foo');
if ($folder->delete()) {
// Pastas removidas com sucesso.
}
integer
Retorna o tamanho em bytes dessa pasta e seu conteudo.
array
Pega o erro do ultimo método.
array
Retorna um array de todos os arquivos correspondentes no diretório atual:
<?php
// Busca todos .png na sua app/webroot/img/ pasta e ordena todos os resultados.
$dir = new Folder(WWW_ROOT . 'img');
$files = $dir->find('.*\.png', true);
/*
Array
(
[0] => cake.icon.png
[1] => test-error-icon.png
[2] => test-fail-icon.png
[3] => test-pass-icon.png
[4] => test-skip-icon.png
)
*/
Nota
Os métodos find e findRecursive irão buscar somente arquivos. Se você deve
buscar pastas e arquivos veja o método Folder::read()
ou
Folder::tree()
array
Retorna um array de todos os arquivos correspondentes dentro e abaixo do diretório atual:
<?php
// Busca arquivos recursivamente começando pelos arquivos test ou index
$dir = new Folder(WWW_ROOT);
$files = $dir->findRecursive('(test|index).*');
/*
Array
(
[0] => /var/www/cake/app/webroot/index.php
[1] => /var/www/cake/app/webroot/test.php
[2] => /var/www/cake/app/webroot/img/test-skip-icon.png
[3] => /var/www/cake/app/webroot/img/test-fail-icon.png
[4] => /var/www/cake/app/webroot/img/test-error-icon.png
[5] => /var/www/cake/app/webroot/img/test-pass-icon.png
)
*/
boolean
Retorna true se o arquivo está em um CakePath.
boolean
Retorna true se o arquivo estiver no caminho:
<?php
$Folder = new Folder(WWW_ROOT);
$result = $Folder->inPath(APP);
// $result = true, /var/www/example/app/ esta em /var/www/example/app/webroot/
$result = $Folder->inPath(WWW_ROOT . 'img' . DS, true);
// $result = true, /var/www/example/app/webroot/ esta em /var/www/example/app/webroot/img/
boolean
Retorna true se o $path e um caminho absoluto.
boolean
<?php $result = Folder::isSlashTerm(‘/my/test/path’); // $result = false $result = Folder::isSlashTerm(‘/my/test/path/’); // $result = true
boolean
Retorna true se o $path é um caminho do Windows.
array
Pega as mensagens do ultimo método.
boolean
Move um diretório recursivamente.
string
Retorna um conjunto correto de barras para determinado $path (’\’ para caminhos Windows e ‘/’ para outros caminhos).
string
Retorna o caminho atual.
mixed
$sort (boolean
) – Se true vai ordenar os resultados.
$exceptions (mixed
) – Um array de nomes de arquivos e pastas para ignorar. Se true ou ‘.’ este metodo vai ignorar arquivos escondidos ou pontos.
$fullPath (boolean
) – Se true vai retornar os resultados usando o caminho absoluto.
Retorna um array de conteudos do diretório atual.O array retornado possui dois sub arrays: Um com diretórios e um com arquivos:
<?php
$dir = new Folder(WWW_ROOT);
$files = $dir->read(true, array('files', 'index.php'));
/*
Array
(
[0] => Array // pastas
(
[0] => css
[1] => img
[2] => js
)
[1] => Array // files
(
[0] => .htaccess
[1] => favicon.ico
[2] => test.php
)
)
*/
string
Pega o caminho real(colocando “..” em uma conta).
string
Retorna $path com a barra adicionada para terminação(Correto para Windows ou outro OS).
mixed
Retorna um array dos diretórios próximos e arquivos em cada diretório.
<?php
//Cria um arquivos com permissões 0644
$file = new File('/path/to/file.php', true, 0644);
O objeto Folder do arquivo.
O nome do arquivo com a extensão. Difere do
File::name()
o qual retorna o nome sem extensão.
Um array das informações do arquivo. User File::info()
.
Detém o recurso manipulador de arquivo, se o arquivo é aberto.
Ativa bloqueio para leitura e escrita de arquivos.
O caminho absoluto dos arquivos atuais.
boolean
Adiciona a seqüência de dados dada ao arquivo atual
boolean
Fecha o arquivo atual se estiver aberto.
boolean
Copia o arquivo para o destino $dest.
boolean
Cria um arquivo.
boolean
Deleta um arquivo.
boolean
Retorna true se o arquivo é um executavel.
boolean
Retorna true se o arquivo existir.
string
Retorna a extensão do arquivo.
integer|false
Retorna o grupo de arquivos, ou falso em caso de erro.
array
Retorna as informações do arquivo.
Alterado na versão 2.1: File::info()
Agora inclui informações de filesize e mimetype.
integer|false
Retorna o ultimo acesso, ou falso em caso de erro.
integer|false
Retorna a ultima modificação, ou falso em caso de erro.
string
Pega o MD5 Checksum do arquivo com um teste anterior do filesize,ou falso em caso de erro.
string
Retorna o nome do arquivo sem extensão.
mixed
Adiciona ou pega o descolamento do arquivo aberto.
boolean
Abre o arquivo atual com seu $mode.
integer
Retorna o proprietário do arquivo.
string
Retorna o “chmod” (permissões) do arquivo.
string
Prepara uma string ascii para escrever. Converte o final da linha para o terminador correto para a plataforma atual. Para Windows “rn” vai ser usado, “n” para todas as plataformas.
string
Rertorna o caminho completo do arquivo.
string|boolean
Retorna os conteudos do arquivo atual como string ou retorna falso se falhar.
boolean
Retorna true se o arquivo pode ser lido.
string
Faz o filename ser serguro para ser salvo.
integer
Retorna o filesize.
boolean
Retorna true se o arquivo e writable(pode ser escrito).
boolean
Escreve os dados no arquivo atual.
Novo na versão 2.1: File::mime()
mixed
Pega o mimetype do arquivo, retorna false se falhar.
boolean
Sobrescreve o texto no arquivo. Retorna falso se falhar ou true se funcionar.
Novo na versão 2.5: File::replaceText()