Класс fs
- class
fs(php\lib\fs). - package
std
use php\lib\fs;
// или
use std;
Утилитный класс для работы с файловой системой, с папками и файлами.
Статичные методы
fs ::separator()- возвращает резделитель для имен файловfs ::pathSeparator()- возвращает разделитель файловых путейfs ::valid()- валидно ли имя файла для ОСfs ::abs()- абсолютный путь к файлу/папкеfs ::name()- имя файла/папки от полного путиfs ::nameNoExt()- имя файла без расширения от полного путиfs ::pathNoExt()- полный путь без расширенияfs ::ext()- расширение файлаfs ::hasExt()- содержит ли расширение файлаfs ::parent()- возвращает родительский путь на уровень вышеfs ::ensureParent()- создает папку для пути, если ее еще нетfs ::normalize()- нормализует внешний вид пути для текущей ОСfs ::exists()- существует ли файл или папкаfs ::isFile()- путь является ли файломfs ::isDir()- путь является ли папкойfs ::isHidden()- скрыт(а) ли файл/папкаfs ::size()- размер файла в байтахfs ::time()- последнее время изменения файла/папки в миллисекундах (unixstamp)fs ::makeDir()- создать папкуfs ::makeFile()- создать пустой файлfs ::delete()- удалить файл или пустую папкуfs ::clean()- очистить папку от всех файловfs ::scan()- просканировать папкуfs ::hash()- посчтитать хэш файла (MD5, SHA1 и т.д.)fs ::copy()- скопировать из потока или файла в другой файлfs ::move()- переместить файлfs ::rename()- переименовать файлfs ::get()- вернуть содержимое файла в виде строки
isFile()
fs::isFile($path): bool
Метод возвращает true, если переданный путь $path существует и является файлом.
if (fs::isFile('path/to/file.txt')) {
alert('Файл существует');
}
isDir()
fs::isDir($path): bool
Метод возвращает true, если переданный путь $path существует и является директорией (папкой).
if (fs::isDir('path/to/')) {
alert('Папка существует');
}
size()
fs::size(string $filePath): int
Метод возвращает модуль размер файла $filePath в байтах. 1 КБ = 1024 байт, 1 МБ = 1024 КБ и т.д.
Если файл не существует, метод вернет -1.
time()
fs::time(string $path): int
Метод возвращает время последнего изменения файла в unix timestamp (в миллискундах).
$time = fs::time('path/to/file.txt');
$time = new Time($time);
// форматирование даты
alert($time->toString('dd-MM-yyyy HH:mm:ss'));
scan()
fs::scan(string $path, callable|array $filter = null, int $maxDepth = 0, $subIsFirst = false): array
(!) Внимание, фильтр в виде массива и результат добавлен только в версии DN 1.6.1 и выше.
Метод сканирует папку на файлы и папки с помощью фильтра (функция или массив).
fs::scan('path/to/dir', function (File $file, $depth) {
echo $file, "\n"; // нашли файл/папку.
});
Пример для версии DN 1.6.1+:
$files = fs::scan('path/to/dir'); // найти и вернуть все файлы/папки
// найти файлы только определенных расширений и вернуть.
$files = fs::scan('path/to/dir', ['extensions' => ['jpg', 'png', 'gif', 'jpeg'], 'excludeDirs' => true]);
// найти все папки и вернуть
$files = fs::scan('path/to/dir', ['excludeFiles' => true]);
// найти все файлы, размер которых больше 10 мб и меньше 100 мб.
$files = fs::scan('path/to/dir', ['minSize' => 1024 * 1024 * 10, 'maxSize' => 1024 * 1024 * 100]);
copy()
fs::copy(string|Stream $source, string|Stream $dest, callable $onProgress = null, int $bufferSize = 8096): int
Метод копирует данные из файла или стрима $source в другой файл или стрим $dest, при этом используется буффер и все данные не загружаются разом в память.
Через аргумент $onProgress можно навесить функцию-коллбэк для контролирования прогресса копирования данных, а через $bufferSize можно регулировать размер буфера. Рекомендуется увеличивать размер буфера до сотен килобайт при копировании огромных данных!
Функция позволяет также копировать и файлы/страницы из интернета и сети.
fs::copy('file.txt', 'fileNew.txt'); // просто копирует файл.
fs::copy('http://example.com/file.txt', 'file.txt'); // копирует файл с сайта.
$stream = new MemoryStream('hello world');
fs::copy($stream, 'file.txt'); // копирует из потока в файл.
Функция возвращает количество скопированных байт данных.
get()
fs::get(string $source, string $charset = null, string $mode = 'r'): string
Метод возвращает контент файла или стрима $source, метод похож на функцию file_get_contents().
ensureParent()
fs::ensureParent(string $filePath): bool
Метод создает папку файла если ее еще нет.