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);