Полный цикл в digital

Работа с файловой системой

За работу с файловой системой в новом ядре отвечают класс пространства имен Bitrix\Main\IO.

  1. IO\Directory работа с директориями
  2. IO\File работа с файлами
  3. 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);
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг