Класс 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
Метод создает папку файла если ее еще нет.