[редактировать]

Класс 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

Метод создает папку файла если ее еще нет.