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