Os utilitários de pasta e arquivo são classes convenientes para ajudá-lo a ler e gravar/anexar arquivos, listar arquivos dentro de uma pasta e outras tarefas comuns relacionadas ao diretório.
Deprecated since version 4.0: As classes File
e Folder
serão removidas na 5.0.
Use classes SPL como SplFileInfo
ou SplFileObject
e classes iterator
como RecursiveDirectoryIterator
, RecursiveRegexIterator
etc.
Certifique-se de que as classes estejam carregadas:
use Cake\Filesystem\Folder;
use Cake\Filesystem\File;
Com isso podemos configurar uma nova instância da pasta:
$dir = new Folder('/path/to/folder');
e então pesquise todos os arquivos .php dentro dessa pasta usando regex:
$files = $dir->find('.*\.php');
Agora podemos percorrer os arquivos e ler ou escrever/anexar ao conteúdo ou simplesmente excluir o arquivo:
foreach ($files as $file) {
$file = new File($dir->pwd() . DS . $file);
$contents = $file->read();
// $file->write('Estou substituindo o conteúdo deste arquivo');
// $file->append('Estou adicionando ao final deste arquivo.');
// $file->delete(); // Estou excluindo este arquivo
$file->close(); // Certifique-se de fechar o arquivo quando terminar
}
// Cria uma nova pasta com as permissões 0755
$dir = new Folder('/path/to/folder', true, 0755);
Caminho da pasta atual. Folder::pwd()
retornará a mesma informação.
Se os resultados da lista devem ou não ser classificados por nome.
Modo a ser usado ao criar pastas. O padrão é 0755
. Não faz nada em máquinas Windows.
Retorna $path com $elemento adicionado, com a barra correta:
$path = Folder::addPathElement('/a/path/for', 'testing');
// $path é igual a /a/path/for/testing
$element também pode ser um array:
$path = Folder::addPathElement('/a/path/for', ['testing', 'another']);
// $path é igual a /a/path/for/testing/another
Mude o diretório para $path. Retorna false
em caso de falha:
$folder = new Folder('/foo');
echo $folder->path; // Exibe /foo
$folder->cd('/bar');
echo $folder->path; // Exibe /bar
$false = $folder->cd('/non-existent-folder');
Altere o modo em uma estrutura de diretório recursivamente. Isso inclui alterar o modo dos arquivos também:
$dir = new Folder();
$dir->chmod('/path/to/folder', 0755, true, ['skip_me.php']);
Copie recursivamente um diretório. O único parâmetro $options pode ser um caminho para a cópia ou um conjunto de opções:
$folder1 = new Folder('/path/to/folder1');
$folder1->copy('/path/to/folder2');
// Colocará a pasta1 e todo o seu conteúdo na pasta2
$folder = new Folder('/path/to/folder');
$folder->copy([
'to' => '/path/to/new/folder',
'from' => '/path/to/copy/from', // Irá causar a ocorrência de um cd()
'mode' => 0755,
'skip' => ['skip-me.php', '.git'],
'scheme' => Folder::SKIP // Pule diretórios/arquivos que já existem.
]);
Existem 3 esquemas suportados:
Folder::SKIP
pule a cópia/movimentação de arquivos e diretórios
que existem no diretório de destino.
Folder::MERGE
mescla os diretórios de origem/destino. Os arquivos no diretório de origem
substituirão os arquivos no diretório de destino. O conteúdo do diretório será mesclado.
Folder::OVERWRITE
sobrescreve os arquivos e diretórios existentes no diretório de destino pelos do
diretório de origem. Se ambos contiverem o mesmo subdiretório, o conteúdo do diretório
de destino será removido e substituído pelo de origem.
Retorna um conjunto correto de barras para o $path fornecido (”\” para caminhos do Windows e “/” para outros caminhos).
Crie uma estrutura de diretório recursivamente. Pode ser usado para criar estruturas de caminho mais profundo como /foo/bar/baz/shoe/horn:
$folder = new Folder();
if ($folder->create('foo' . DS . 'bar' . DS . 'baz' . DS . 'shoe' . DS . 'horn')) {
// As pastas aninhadas foram criadas com sucesso
}
Remova diretórios recursivamente se o sistema permitir:
$folder = new Folder('foo');
if ($folder->delete()) {
// Foo foi excluído com sucesso e também suas pastas aninhadas
}
Retorna o tamanho em bytes desta pasta e seu conteúdo.
Obtenha o erro do método mais recente.
Retorna uma matriz de todos os arquivos correspondentes no diretório atual:
// Encontre todos os .png em sua pasta webroot/img/ e classifique 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
)
*/
Note
Os métodos find e findRecursive da pasta só encontrarão arquivos. Se você
gostaria de obter pastas e arquivos, consulte Folder::read()
ou
Folder::tree()
Retorna uma matriz de todos os arquivos correspondentes dentro e abaixo do diretório atual:
// Encontre arquivos recursivamente começando com teste ou índice
$dir = new Folder(WWW_ROOT);
$files = $dir->findRecursive('(test|index).*');
/*
Array
(
[0] => /var/www/cake/webroot/index.php
[1] => /var/www/cake/webroot/test.php
[2] => /var/www/cake/webroot/img/test-skip-icon.png
[3] => /var/www/cake/webroot/img/test-fail-icon.png
[4] => /var/www/cake/webroot/img/test-error-icon.png
[5] => /var/www/cake/webroot/img/test-pass-icon.png
)
*/
Retorna true
se o arquivo está em um determinado CakePath.
Retorna true
se o arquivo está no caminho fornecido:
$Folder = new Folder(WWW_ROOT);
$result = $Folder->inPath(APP);
// $result = false, /var/www/example/src/ não está em /var/www/example/webroot/
$result = $Folder->inPath(WWW_ROOT . 'img' . DS, true);
// $result = true, /var/www/example/webroot/img/ está em /var/www/example/webroot/
Retorna true
se o $path fornecido for um caminho absoluto.
Retorna true
se o $path termina em uma barra (ou seja, termina com uma barra):
$result = Folder::isSlashTerm('/my/test/path');
// $result = false
$result = Folder::isSlashTerm('/my/test/path/');
// $result = true
Retorna true
se o $path fornecido for um caminho do Windows.
Obtenha as mensagens do método mais recente.
Move recursivamente o diretório.
Retorna um caminho com barras normalizadas para o sistema operacional.
Retorna o caminho atual
Retorna uma matriz do conteúdo do diretório atual. A matriz retornada contém duas submatrizes e uma de diretórios e uma de arquivos:
$dir = new Folder(WWW_ROOT);
$files = $dir->read(true, ['files', 'index.php']);
/*
Array
(
[0] => Array // Folders
(
[0] => css
[1] => img
[2] => js
)
[1] => Array // Files
(
[0] => .htaccess
[1] => favicon.ico
[2] => test.php
)
)
*/
Pegue o caminho real (levando «..» em consideração).
Retorna $path com barra de terminação adicionada (corrigido para Windows ou outro sistema operacional).
Retorna uma matriz de diretórios e arquivos aninhados em cada diretório.
// Cria um novo arquivo com as 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. É diferente de File::name()
que retorna o nome sem a extensão.
Uma matriz de informações do arquivo. Ao invés disso use File::info()
.
Contém o recurso de manipulador de arquivo se o arquivo for aberto.
Habilite o bloqueio para leitura e gravação de arquivos.
O caminho absoluto do arquivo atual.
Anexe a string de dados fornecida ao arquivo atual.
Fecha o arquivo atual se estiver aberto.
Copie o arquivo para o caminho absoluto $dest
.
Cria o arquivo.
Apaga o arquivo;
Returna true
se o arquivo for executável
Retorna true
se o arquivo existe.
Retorna a extensão do arquivo.
Retorna a pasta atual.
Retorna o grupo do arquivo, ou false
em caso de erro.
Retorna as informações do arquivo.
Retorna a hora do último acesso.
Retorna a hora da última modificação ou false
em caso de erro.
Obtenha o MD5 Checksum do arquivo com a verificação anterior do
tamanho do arquivo, ou false
no caso de um erro.
Retorna o nome do arquivo sem extensão.
Define ou obtém o deslocamento do arquivo aberto no momento.
Abre o arquivo atual com o $mode fornecido.
Retorna o proprietário do arquivo.
Retorna o «chmod» (permissões) do arquivo.
Prepara uma string ascii para escrita. Converte as terminações de linha no terminador correto para a plataforma atual. Para Windows, será usado «\r\n», para todas as outras plataformas «\ n».
Retorna o caminho completo do arquivo.
Retorne o conteúdo do arquivo atual como uma string ou retorne false
em caso de falha.
Retorna true
se o arquivo é legível.
Torna o nome do arquivo seguro para salvar.
Retorna o tamanho do arquivo em bytes.
Retorna true
se o arquivo for gravável.
Grave os dados fornecidos no arquivo atual.
Pega o tipo MIME do arquivo, retorna false
em caso de falha.
Substitui o texto em um arquivo. Retorna false
em caso de falha e true
em caso de sucesso.