Funciones del sistema de archivos
Nette\Utils\FileSystem es una clase estática que contiene funciones útiles para trabajar con un sistema de ficheros. Una ventaja sobre las funciones nativas de PHP es que lanzan excepciones en caso de error.
Instalación:
composer require nette/utils
Los siguientes ejemplos asumen que el siguiente alias de clase está definido:
use Nette\Utils\FileSystem;
Manipulación
copy(string $origin, string $target, bool $overwrite=true): void
Copia un fichero o un directorio entero. Sobrescribe los archivos y directorios existentes por defecto. Si
$overwrite
se establece en false
y ya existe un $target
, lanza una excepción
Nette\InvalidStateException
. Lanza una excepción Nette\IOException
en caso de error.
FileSystem::copy('/path/to/source', '/path/to/dest', overwrite: true);
createDir(string $directory, int $mode=0777): void
Crea un directorio si no existe, incluidos los directorios padre. Lanza una excepción Nette\IOException
en caso
de error.
FileSystem::createDir('/path/to/dir');
delete(string $path): void
Elimina un archivo o un directorio completo si existe. Si el directorio no está vacío, borra primero su contenido. Lanza una
excepción Nette\IOException
en caso de error.
FileSystem::delete('/path/to/fileOrDir');
makeWritable(string $path, int $dirMode=0777, int $fileMode=0666): void
Establece los permisos de archivo a $fileMode
o los permisos de directorio a $dirMode
.
Recursivamente recorre y establece permisos en todo el contenido del directorio también.
FileSystem::makeWritable('/path/to/fileOrDir');
open(string $path, string $mode): resource
Abre el archivo y devuelve un recurso. El parámetro $mode
funciona igual que la función nativa fopen()
. Lanza una excepción
Nette\IOException
en caso de error.
$res = FileSystem::open('/path/to/file', 'r');
read(string $file): string
Lee el contenido de un $file
. Lanza una excepción Nette\IOException
en caso de error.
$content = FileSystem::read('/path/to/file');
readLines(string $file, bool $stripNewLines=true): \Generator
Lee el contenido del fichero línea a línea. A diferencia de la función nativa file()
, no lee todo el fichero
en memoria, sino que lo lee de forma continua, para poder leer ficheros mayores que la memoria disponible.
$stripNewLines
indica si se eliminan los caracteres de final de línea \r
y \n
. En caso de
error, lanza una excepción Nette\IOException
.
$lines = FileSystem::readLines('/path/to/file');
foreach ($lines as $lineNum => $line) {
echo "Line $lineNum: $line\n";
}
rename(string $origin, string $target, bool $overwrite=true): void
Renombra o mueve un archivo o un directorio especificado por $origin
a $target
. Sobrescribe los
archivos y directorios existentes por defecto. Si $overwrite
se establece en false
y
$target
ya existe, lanza una excepción Nette\InvalidStateException
. Lanza una excepción
Nette\IOException
en caso de error.
FileSystem::rename('/path/to/source', '/path/to/dest', overwrite: true);
write(string $file, string $content, int $mode=0666): void
Escribe el $content
en un $file
. Lanza una excepción Nette\IOException
en caso
de error.
FileSystem::write('/path/to/file', $content);
Caminos
isAbsolute(string $path): bool
Determina si la dirección $path
es absoluta.
FileSystem::isAbsolute('../backup'); // false
FileSystem::isAbsolute('/backup'); // true
FileSystem::isAbsolute('C:/backup'); // true
joinPaths(string …$segments): string
Une todos los segmentos de la ruta y normaliza el resultado.
FileSystem::joinPaths('a', 'b', 'file.txt'); // 'a/b/file.txt'
FileSystem::joinPaths('/a/', '/b/'); // '/a/b/'
FileSystem::joinPaths('/a/', '/../b'); // '/b'
normalizePath(string $path): string
Normaliza ..
y .
y los separadores de directorio en la ruta.
FileSystem::normalizePath('/file/.'); // '/file/'
FileSystem::normalizePath('\file\..'); // '/file'
FileSystem::normalizePath('/file/../..'); // '/..'
FileSystem::normalizePath('file/../../bar'); // '/../bar'
unixSlashes(string $path): string
Convierte las barras oblicuas en /
utilizadas en los sistemas Unix.
$path = FileSystem::unixSlashes($path);
platformSlashes(string $path): string
Convierte las barras oblicuas en caracteres específicos de la plataforma actual, es decir, \
en Windows y
/
en cualquier otra.
$path = FileSystem::platformSlashes($path);