Funções do sistema de arquivos
Nette\Utils\FileSystem é uma classe que contém funções úteis para trabalhar com um sistema de arquivos. Uma vantagem sobre as funções nativas do PHP é que elas lançam exceções em caso de erros.
Se você precisar procurar arquivos no disco, use o Finder.
Instalação:
Os exemplos a seguir assumem que a seguinte classe está definida:
Manipulação
copy(string $origin, string $target, bool $overwrite=true): void
Copia um arquivo ou um diretório inteiro. Sobrescreve arquivos e diretórios existentes por padrão. Se
$overwrite
estiver configurado para false
e um $target
já existir, lança uma exceção
Nette\InvalidStateException
. Lança uma exceção Nette\IOException
por erro ocorrido.
createDir(string $directory, int $mode=0777): void
Cria um diretório se ele não existir, incluindo os diretórios dos pais. Lança uma exceção Nette\IOException
sobre erro ocorrido.
delete(string $path): void
Apaga um arquivo ou um diretório inteiro, caso exista. Se o diretório não estiver vazio, ele apaga seu conteúdo primeiro.
Lança uma exceção Nette\IOException
sobre erro ocorrido.
makeWritable(string $path, int $dirMode=0777, int $fileMode=0666): void
Define as permissões de arquivo para $fileMode
ou as permissões de diretório para $dirMode
.
Atravessa recursivamente e estabelece as permissões também em todo o conteúdo do diretório.
open(string $path, string $mode): resource
Abre arquivo e devolve recurso. O parâmetro $mode
funciona da mesma forma que a função nativa fopen()
. Se ocorrer um erro, ele eleva a exceção
Nette\IOException
.
read(string $file): string
Lê o conteúdo de um $file
. Abre uma exceção Nette\IOException
sobre erro ocorrido.
readLines(string $file, bool $stripNewLines=true): \Generator
Lê o conteúdo do arquivo linha por linha. Ao contrário da função nativa file()
, ela não lê o arquivo
inteiro na memória, mas o lê continuamente, de modo que arquivos maiores do que a memória disponível possam ser lidos. O
$stripNewLines
especifica se deve retirar os caracteres de quebra de linha \r
e \n
. No caso
de um erro, ele levanta uma exceção Nette\IOException
.
rename(string $origin, string $target, bool $overwrite=true): void
Renomeia ou move um arquivo ou um diretório especificado por $origin
para $target
. Sobrescreve
arquivos e diretórios existentes por padrão. Se $overwrite
estiver definido como false
e
$target
já existe, lança uma exceção Nette\InvalidStateException
. Lança uma exceção
Nette\IOException
por erro ocorrido.
write(string $file, string $content, int $mode=0666): void
Escreve o $content
para um $file
. Lança uma exceção Nette\IOException
sobre erro
ocorrido.
Caminhos
isAbsolute(string $path): bool
Determina se o $path
é absoluto.
joinPaths(string …$segments): string
Junta-se a todos os segmentos do caminho e normaliza o resultado.
normalizePath(string $path): string
Normaliza ..
e .
e separadores de diretórios no caminho.
unixSlashes(string $path): string
Converte cortes para /
usados em sistemas Unix.
platformSlashes(string $path): string
Converte cortes em caracteres específicos da plataforma atual, ou seja, \
no Windows e /
em outros
lugares.
resolvePath(string $basePath, string $path): string
Deriva o caminho final de $path
em relação ao diretório base $basePath
. Os caminhos absolutos
(/foo
, C:/foo
) permanecem inalterados (apenas normaliza as barras), os caminhos relativos são anexados
ao caminho base.
Abordagem estática versus não estática
Para substituir facilmente a classe FileSystem
por outra classe, por exemplo, para fins de teste, use-a de forma
não estática: