Документация
ОС Аврора 5.2.0

Класс Files

(Aurora::Mdm::Files)

Обеспечивает доступ к пользовательским каталогам. Подробнее…

Заголовочный файл: #include <mdm-files.h>

Публичные типы

Публичные методы

Подробное описание

Обеспечивает доступ к пользовательским каталогам.

Этот класс будет работать некорректно при отсутствии активной пользовательской сессии (когда Sailfish::Mdm::UserManager().currentUser() возвращает 0). Доступны только директории текущего пользователя.

Для использования данного класса в qmake-настройки проекта клиента следует добавить следующее:

 CONFIG += link_pkgconfig
 PKGCONFIG += sailfishmdm

и затем #include <mdm-files.h>.

Описание типов класса

enum Files::EntryOwner
Константа Значение Описание
Aurora::Mdm::Files::MdmOwner 0x01 Владелец — mdm.
Aurora::Mdm::Files::UserOwner 0x02 Владелец — пользователь.

Это перечисление определяет владельца файла или директории. Любые операции вне директорий следующего типа запрещены: /home/{имя пользователя}/{разрешённая директория}/. Список разрешённых директорий можно получить с помощью метода allowedUserDirs. Эти директории гарантированно разрешены: Desktop, Documents, Downloads, Music, Pictures, Playlists, Public, Templates, Videos. Файлы MDM и пользователя доступны для чтения. Если операция требует изменения файлов или директорий пользователя (включая добавление новых объектов в директорию), она завершится с ошибкой Files::UserFilesAffected.

enum Files::EntryType

Это перечисление типов записей файловой системы.

Константа Значение Описание
Aurora::Mdm::Files::FileType 0x01 Файл.
Aurora::Mdm::Files::DirType 0x02 Директория.
enum Files::ErrorType

Это перечисление определяет возможные ошибки при работе с файлами. В некоторых очень редких ситуациях любая операция может завершиться ошибкой Files::InternalError.

Константа Значение Описание
Aurora::Mdm::Files::NoError 0 Ошибка не произошла.
Aurora::Mdm::Files::NotEnoughSpace 1 Размер файла, перемещаемого с помощью метода moveToUser, превышает квоту пользователя или объем свободного пространства.
Aurora::Mdm::Files::ExecutableFile 2 Попытка прочитать исполняемый файл.
Aurora::Mdm::Files::InvalidPath 3 Указанный путь является недопустимым или запрещённым. Эта ошибка также может означать, что имя файла используется в контексте имени директории или наоборот.
Aurora::Mdm::Files::InvalidTmpPath 4 Невалидный путь к временному файлу в методе moveToUser.
Aurora::Mdm::Files::UserFilesAffected 5 Операция требует изменения файлов или директорий (включая добавление новых объектов), принадлежащих пользователю.
Aurora::Mdm::Files::OverwritingIsImpossible 6 Невозможно перезаписать пользовательские файлы.
Aurora::Mdm::Files::InternalError 7 Произошла внутренняя ошибка.

Описание методов класса

Files::Files(QObject *parent = nullptr)

Создаёт экземпляр Files с родительским элементом, указанным в параметре parent.

[virtual] Files::~Files()

Деструктор для класса Files.

QStringList Files::allowedUserDirs()

Возвращает директории, разрешённые для всех остальных операций. Подробности см. в описании Aurora::Mdm::Files::EntryOwner.

ErrorType Files::createDir(const QString &path)

Пытается создать директорию по указанному path. Владельцем созданной директории станет mdm, если она не существовала ранее. Если директория уже существует (независимо от владельца), операция завершится успешно. Если путь к директории не существует, все промежуточные директории будут автоматически созданы с владельцем mdm. Если для создания директории требуется удаление файла, операция завершится с ошибкой Files::InvalidPath.

QList<EntryInfo> Files::entriesInDir(const QString &path, const QStringList &extensions, ErrorType &error)

Возвращает объекты в директории path, отфильтрованные по расширениям . Устанавливает error в значение, соответствующее возникшей ошибке. Эта функция не выполняет рекурсивный поиск по всем поддиректориям. Если поле extensions пустое, этот параметр игнорируется. Каждое расширение представляет собой строку, указанную в имени файла после символа "." (точка). Например, следующий код устанавливает три фильтра расширений для исходных файлов C++:

 QStringList extensions { "cpp", "cxx", "cc" };
quint64 Files::getAvailableBytes(const QString &path, ErrorType &error)

Возвращает количество доступных байтов для указанного path. Возвращает 0 и устанавливает error в Files::InvalidPath, если путь невалиден.

int Files::getReadFileDescriptor(const QString &path, ErrorType &error)

Открывает файловый дескриптор файла по пути path для чтения. Возвращает -1 при ошибке. Устанавливает error в значение, соответствующее возникшей ошибке. Возвращаемый файловый дескриптор должен быть закрыт с использованием стандартного метода close() в Linux. Попытка открыть директорию или несуществующий файл приведёт к ошибке Files::InvalidPath.

QString Files::getTmpFilesDir()

Возвращает абсолютный путь к директории для создания временных файлов. Можно создавать файлы в этой директории, и использовать метод moveToUser для их перемещения в пользовательскую директорию.

ErrorType Files::moveToUser(const QString &tmpPath, const QString &path)

Перемещает временный файл с путём tmpPath в пользовательскую директорию path. Если путь к файлу не существует, все промежуточные каталоги будут автоматически созданы с mdm в качестве владельца. При переходе к существующему файлу, принадлежащему mdm, старый файл перезаписывается. При переходе к существующему файлу, принадлежащему любому другому пользователю, возникает ошибка Files::overwritingispossible. Следовательно, эта операция может завершиться с теми же ошибками, что и createDir, и remove. Попытка перейти к директории или пользовательскому файлу для записи приведет к ошибке Files::InvalidPath. В случае ошибки, но не Files::InternalError, исходный файл tmpPath останется там, где он был. Если возникает ошибка Files::InternalError, исходный файл tmpPath может быть удалён. Другая возможная ошибка: Files::InvalidTmpPath.

ErrorType Files::remove(const QString &path)

Пытается удалить объект (файл или каталог) по пути path. Если этот объект не существует и путь действителен, то эта операция завершится успешно. Если это директория, то все его поддиректории будут рекурсивно удалены.

Если пользовательский объект (файл или директория) необходимо удалить во время рекурсивного обхода, этот объект будет проигнорирован. Эта операция будет продолжена, но завершится с ошибкой Files::UserFilesAffected. Такая ситуация маловероятна, поскольку пользователь не может создавать файлы в каталоге, принадлежащем mdm.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.