Работа с файловой системой
За работу с файловой системой в новом ядре отвечают класс пространства имен Bitrix\Main\IO
.
IO\Directory
работа с директориямиIO\File
работа с файламиIO\Path
работа с путями
use Bitrix\Main\IO,
Bitrix\Main\Application;
Класс IO\File
$file = new IO\File(Application::getDocumentRoot().'/file.txt');
Информация о файле:
// true, если файл существует
$isExist = $file->isExists();
// директория файла как объект IO\Directory
$dir = $file->getDirectory();
// директория файла в виде текста
$dir = $file->getDirectoryName();
// имя файла
$fileName = $file->getName();
// расширение файла
$fileExt = $file->getExtension();
// размер файла в байтах
$fileSize = $file->getSize();
// тип файла, Content-type
$contentType = $file->getContentType();
// дата создания, timestamp
$createdAt = $file->getCreationTime();
// дата последнего доступа, timestamp
$accessAt = $file->getLastAccessTime();
// дата модификации, timestamp
$modifiedAt = $file->getModificationTime();
// права на файл в виде десятичного числа
$perms = $file->getPermissions();
// права на файл в виде восьмеричного числа
$perms = substr(sprintf('%o', $file->getPermissions()), -3);
Действия над файлами:
// получить содержание файла
$content = $file->getContents();
// записать содержимое в файл с заменой
$file->putContents('some content');
// дописать содержимое в конец файла
$file->putContents('other content', IO\File::APPEND);
// вывести содержимое файла
$file->readFile();
// переместить/переименовать файл
$file->rename(Application::getDocumentRoot().'/new-file.txt');
// удалить файл
$file->delete();
Статические варианты методов:
// получаем файл
$path = Application::getDocumentRoot().'/file.txt';
// проверить существование файла
IO\File::isFileExists($path);
// получить содержание файла
IO\File::getFileContents($path);
// записать содержимое в файл с заменой
IO\File::putFileContents($path, 'some content');
// дописать содержимое в конец файла
IO\File::putFileContents($path, 'other content', self::APPEND);
// удалить файл
IO\File::deleteFile($path);
Класс IO\Directory
$dir = new IO\Directory(Application::getDocumentRoot().'/test/');
Если директории не существует, её можно создать:
$dir->create(); // создаёт директорию с указанным в конструкторе путём
Информация о директории:
// true, если директория существует
$isExist = $dir->isExists();
// дата создания, timestamp
$createdAt = $dir->getCreationTime();
// дата последнего доступа, timestamp
$accessAt = $dir->getLastAccessTime();
// дата модификации, timestamp
$modifiedAt = $dir->getModificationTime();
// права на директорию в виде десятичного числа
$perms = $dir->getPermissions();
// права на директорию в виде восьмеричного числа
$perms = substr(sprintf('%o', $dir->getPermissions()), -3);
Действия над директориями:
// создает и возвращает вложенную директорию с указанным именем
$childDir = $dir->createSubdirectory('child');
// переместить/переименовать директорию
$dir->rename(Application::getDocumentRoot().'/other-path/');
// удалить директорию
$dir->delete();
Получить массив файлов в директории:
$files = $dir->getChildren(); // массив объектов IO\File
Статические варианты методов:
$path = Application::getDocumentRoot().'/some-dir/';
// создать директорию
IO\Directory::createDirectory($path);
// удалить директорию
IO\Directory::deleteDirectory($path);
// проверить существование
IO\Directory::isDirectoryExists($path);
Класс IO\Path
$path = Application::getDocumentRoot().'/some-dir/some-file.ext';
// возвращает имя файла
$fileName = IO\Path::getName($path);
// возвращает директорию файла (полный путь)
$fileDir = IO\Path::getDirectory($path);
// возвращает расширение файла
$fileExt = IO\Path::getExtension($path);