Spec-Zone.ru › Qt 6.1

Класс QFileDevice

Класс QFileDevice предоставляет интерфейс для чтения и записи в открытые файлы. Подробнее...

Заголовок: #include <QFileDevice>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
С момента: Qt 5.0
Наследуется от: QIODevice
Наследующие классы:

QFile и QSaveFile

  • Список всех членов, включая наследуемые

Примечание: Все функции в этом классе являются повторно входящими.

Типы общедоступного доступа

Перечисление FileError { НетОшибки, ОшибкаЧтения, ОшибкаЗаписи, КритическаяОшибка, ОшибкаРесурса, …, ОшибкаКопирования }
Перечисление FileHandleFlag { АвтоматическоеЗакрытиеДескриптора, НеЗакрыватьДескриптор }
флаги FileHandleFlags
Перечисление FileTime { ВремяДоступаКФайлу, ВремяСозданияФайла, ВремяИзмененияМетаданныхФайла, ВремяМодификацииФайла }
Перечисление MemoryMapFlag { БезПараметров, ПараметрПриватнойОперации }
флаги MemoryMapFlags
Перечисление Permission { ЧтениеВладельцем, ЗаписьВладельцем, ИсполнениеВладельцем, ЧтениеПользователем, ЗаписьПользователем, …, ИсполнениеДругим }
флаги Permissions

Общедоступные функции

виртуальный ~QFileDevice()
QFileDevice::FileError error() const
виртуальный QString fileName() const
QDateTime fileTime(QFileDevice::FileTime time) const
bool flush()
int handle() const
uchar * map(qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags = NoOptions)
виртуальный QFileDevice::Permissions permissions() const
виртуальный bool resize(qint64 sz)
bool setFileTime(const QDateTime &newDate, QFileDevice::FileTime fileTime)
виртуальный bool setPermissions(QFileDevice::Permissions permissions)
bool unmap(uchar *address)
void unsetError()

Переопределённые общедоступные функции

виртуальный bool atEnd() const override
виртуальный void close() override
виртуальный bool isSequential() const override
виртуальный qint64 pos() const override
виртуальный bool seek(qint64 pos) override
виртуальный qint64 size() const override

Переопределённые защищённые функции

виртуальный qint64 readData(char *data, qint64 len) override
виртуальный qint64 readLineData(char *data, qint64 maxlen) override
виртуальный qint64 writeData(const char *data, qint64 len) override

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

QFileDevice — базовый класс для устройств ввода-вывода, которые могут читать и записывать текстовые и двоичные файлы и ресурсы. QFile предлагает основную функциональность, QFileDevice служит базовым классом для совместного использования функциональности с другими устройствами файлов, такими как QTemporaryFile, предоставляя все операции, которые могут быть выполнены над файлами, открытыми с помощью QFile или QTemporaryFile.

См. также QFile и QTemporaryFile.

Документация по типу члена

Перечисление QFileDevice::FileError

Это перечисление описывает ошибки, которые могут быть возвращены функцией error().

Константа Значение Описание
QFileDevice::NoError 0 Ошибка не произошла.
QFileDevice::ReadError 1 При чтении из файла произошла ошибка.
QFileDevice::WriteError 2 При записи в файл произошла ошибка.
QFileDevice::FatalError 3 Произошла критическая ошибка.
QFileDevice::ResourceError 4 Недостаточно ресурсов (например, слишком много открытых файлов, недостаточно памяти и т. д.).
QFileDevice::OpenError 5 Файл не удалось открыть.
QFileDevice::AbortError 6 Операция была прервана.
QFileDevice::TimeOutError 7 Произошло превышение времени ожидания.
QFileDevice::UnspecifiedError 8 Произошла неопределённая ошибка.
QFileDevice::RemoveError 9 Файл не удалось удалить.
QFileDevice::RenameError 10 Файл не удалось переименовать.
QFileDevice::PositionError 11 Не удалось изменить позицию в файле.
QFileDevice::ResizeError 12 Не удалось изменить размер файла.
QFileDevice::PermissionsError 13 Не удалось получить доступ к файлу.
QFileDevice::CopyError 14 Файл не удалось скопировать.

Перечисление QFileDevice::FileHandleFlagфлаги QFileDevice::FileHandleFlags

Это перечисление используется при открытии файла для задания дополнительных параметров, которые применяются только к файлам, а не к общему QIODevice.

END_OF_DOCUMENT_MARKER
Постоянная Значение Описание
QFileDevice::AutoCloseHandle 0x0001 Дескриптор файла, переданный в open(), должен быть закрыт с помощью close(). По умолчанию close просто сбрасывает буфер файла, и приложение отвечает за закрытие дескриптора. При открытии файла по имени этот флаг игнорируется, так как Qt всегда владеет дескриптором и должен его закрыть.
QFileDevice::DontCloseHandle 0 Если явно не закрыт, дескриптор файла остается открытым при уничтожении объекта QFile.

Тип FileHandleFlags является псевдонимом для QFlags<FileHandleFlag>. Он хранит логическое ИЛИ комбинацию значений FileHandleFlag.

[since 5.10] перечисление QFileDevice::FileTime

Это перечисление используется функциями fileTime() и setFileTime().

Постоянная Значение Описание
QFileDevice::FileAccessTime 0 Время последнего доступа к файлу (например, чтения или записи).
QFileDevice::FileBirthTime 1 Время создания файла (возможно, не поддерживается на UNIX).
QFileDevice::FileMetadataChangeTime 2 Время последнего изменения метаданных файла.
QFileDevice::FileModificationTime 3 Время последнего изменения файла.

Это перечисление было добавлено или изменено в Qt 5.10.

См. также setFileTime(), fileTime(), и QFileInfo::fileTime().

перечисление QFileDevice::MemoryMapFlagфлаги QFileDevice::MemoryMapFlags

Это перечисление описывает специальные опции, которые могут использоваться функцией map().

Постоянная Значение Описание
QFileDevice::NoOptions 0 Нет опций.
QFileDevice::MapPrivateOption 0x0001 Карта памяти будет личной, поэтому любые изменения не будут видны другим процессам и не будут записаны на диск. Любые такие изменения будут потеряны при размапировании памяти. Не определено, будут ли изменения, внесенные в файл после создания карты, видны через карту памяти. Это значение перечисления было добавлено в Qt 5.4.

Тип MemoryMapFlags является псевдонимом для QFlags<MemoryMapFlag>. Он хранит логическое ИЛИ комбинацию значений MemoryMapFlag.

перечисление QFileDevice::Permissionфлаги QFileDevice::Permissions

Это перечисление используется функцией permission() для отображения разрешений и владельца файла. Значения могут быть объединены операцией ИЛИ для проверки нескольких разрешений и значений владельца.

Постоянная Значение Описание
QFileDevice::ReadOwner 0x4000 Файл читаем для владельца.
QFileDevice::WriteOwner 0x2000 Файл записывается владельцем.
QFileDevice::ExeOwner 0x1000 Файл исполняется владельцем.
QFileDevice::ReadUser 0x0400 Файл читаем для пользователя.
QFileDevice::WriteUser 0x0200 Файл записывается пользователем.
QFileDevice::ExeUser 0x0100 Файл исполняется пользователем.
QFileDevice::ReadGroup 0x0040 Файл читаем для группы.
QFileDevice::WriteGroup 0x0020 Файл записывается группой.
QFileDevice::ExeGroup 0x0010 Файл исполняется группой.
QFileDevice::ReadOther 0x0004 Файл читаем для всех.
QFileDevice::WriteOther 0x0002 Файл записывается всеми.
QFileDevice::ExeOther 0x0001 Файл исполняется всеми.

Предупреждение: Из-за различий в поддерживаемых платформах Qt, семантика ReadUser, WriteUser и ExeUser зависит от платформы: в Unix возвращаются права владельца файла, а в Windows — права текущего пользователя. Это поведение может измениться в будущих версиях Qt.

Примечание: На файловых системах NTFS проверка владения и разрешений отключена по умолчанию по соображениям производительности. Чтобы включить её, добавьте следующую строку:

extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;

Проверка разрешений затем включается и выключается путём инкремента и декремента qt_ntfs_permission_lookup на 1.

qt_ntfs_permission_lookup++; // turn checking on
qt_ntfs_permission_lookup--; // turn it off again

Тип Permissions является псевдонимом для QFlags<Permission>. Он хранит логическое ИЛИ комбинацию значений Permission.

Документация по функциям-членам

[virtual] QFileDevice::~QFileDevice()

Уничтожает устройство файла, закрывая его при необходимости.

[override virtual] bool QFileDevice::atEnd() const

Переопределяет: QIODevice::atEnd() const.

Возвращает true , если достигнут конец файла; в противном случае возвращает false.

Для пустых обычных файлов на Unix (например, тех, которые находятся в /proc), эта функция возвращает true, так как файловая система сообщает, что размер такого файла равен 0. Поэтому вы не должны полагаться на atEnd() при чтении данных из такого файла, а вместо этого вызывайте read() до тех пор, пока больше данных не будет.

[override virtual] void QFileDevice::close()

Переопределяет: QIODevice::close().

Вызывает QFileDevice::flush() и закрывает файл. Ошибки flush игнорируются.

См. также QIODevice::close().

QFileDevice::FileError QFileDevice::error() const

Возвращает статус ошибки файла.

Статус устройства ввода-вывода возвращает код ошибки. Например, если open() возвращает false, или операция чтения/записи возвращает -1, можно вызвать эту функцию, чтобы узнать причину неудачи операции.

См. также unsetError().

[virtual] QString QFileDevice::fileName() const

Возвращает имя файла. По умолчанию в QFileDevice возвращается пустая строка.

[since 5.10] QDateTime QFileDevice::fileTime(QFileDevice::FileTime time) const

Возвращает время файла, указанное параметром time. Если время определить невозможно, возвращается QDateTime() (недействимая дата и время).

Эта функция была добавлена в Qt 5.10.

См. также setFileTime(), FileTime, и QDateTime::isValid().

bool QFileDevice::flush()

Сбрасывает все буферизованные данные в файл. Возвращает true при успехе; в противном случае возвращает false.

int QFileDevice::handle() const

Возвращает дескриптор файла.

Это небольшое положительное целое число, подходящее для использования с функциями библиотеки C, такими как fdopen() и fcntl(). На системах, использующих дескрипторы файлов для сокетов (т.е. системы Unix, но не Windows), дескриптор также может использоваться с QSocketNotifier.

Если файл не открыт или произошла ошибка, handle() возвращает -1.

См. также QSocketNotifier.

[override virtual] bool QFileDevice::isSequential() const

Переопределяет: QIODevice::isSequential() const.

Возвращает true , если файл может быть обработан только последовательно; в противном случае возвращает false.

Большинство файлов поддерживают произвольный доступ, но некоторые специальные файлы могут нет.

См. также QIODevice::isSequential().

uchar *QFileDevice::map(qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags = NoOptions)

Карта размером в size байт файла в памяти, начиная с offset. Файл должен быть открыт для успешного создания карты, но файл не обязательно должен оставаться открытым после того, как память будет отображена. Когда QFile уничтожается или с этим объектом открывается новый файл, все карты, которые не были отмапированы, будут автоматически отмапированы.

Отображение будет иметь такой же режим открытия, как и файл (чтение и/или запись), за исключением использования MapPrivateOption, в этом случае запись в отображённую память всегда возможна.

Любые параметры отображения могут быть переданы через flags.

Возвращает указатель на память или nullptr в случае ошибки.

См. также unmap().

[virtual] QFileDevice::Permissions QFileDevice::permissions() const

Возвращает полное логическое ИЛИ сочетание QFile::Permission для файла.

См. также setPermissions().

[override virtual] qint64 QFileDevice::pos() const

Переопределяет: QIODevice::pos() const.

[override virtual protected] qint64 QFileDevice::readData(char *data, qint64 len)

Переопределяет: QIODevice::readData(char *data, qint64 maxSize).

[override virtual protected] qint64 QFileDevice::readLineData(char *data, qint64 maxlen)

Переопределяет: QIODevice::readLineData(char *data, qint64 maxSize).

[virtual] bool QFileDevice::resize(qint64 sz)

Устанавливает размер файла (в байтах) sz. Возвращает true если изменение размера прошло успешно; в противном случае false. Если sz больше, чем текущий размер файла, новые байты будут установлены в 0; если sz меньше, файл просто обрезается.

Предупреждение: Эта функция может завершиться неудачей, если файл не существует.

См. также size().

[override virtual] bool QFileDevice::seek(qint64 pos)

Переопределяет: QIODevice::seek(qint64 pos).

Для устройств с произвольным доступом эта функция устанавливает текущую позицию в pos, возвращая true при успехе или false при ошибке. Для последовательных устройств, по умолчанию, ничего не делает и возвращает false.

Переход за пределы файла: Если позиция выходит за пределы файла, то seek() немедленно не расширяет файл. Если выполняется запись в эту позицию, то файл расширяется. Содержимое файла между предыдущим концом файла и новыми данными НЕОПРЕДЕЛЁННО и зависит от платформы и файловой системы.

[since 5.10] bool QFileDevice::setFileTime(const QDateTime &newDate, QFileDevice::FileTime fileTime)

Устанавливает время файла, указанное fileTime, на newDate, возвращая true при успехе; в противном случае возвращает false.

Примечание: Файл должен быть открыт для использования этой функции.

Эта функция была добавлена в Qt 5.10.

См. также fileTime() и FileTime.

[virtual] bool QFileDevice::setPermissions(QFileDevice::Permissions permissions)

Устанавливает разрешения для файла на указанные permissions. Возвращает true при успехе или false если разрешения не могут быть изменены.

Предупреждение: Эта функция не манипулирует ACL, что может ограничить ее эффективность.

См. также permissions().

[override virtual] qint64 QFileDevice::size() const

Переопределяет: QIODevice::size() const.

Возвращает размер файла.

Для обычных пустых файлов на Unix (например, тех, что в /proc), эта функция возвращает 0; содержимое такого файла генерируется по запросу, при вызове read().

bool QFileDevice::unmap(uchar *address)

Отменяет отображение памяти address.

Возвращает true если отмена отображения прошла успешно; в противном случае false.

См. также map().

void QFileDevice::unsetError()

Устанавливает ошибку файла в QFileDevice::NoError.

См. также error().

[override virtual protected] qint64 QFileDevice::writeData(const char *data, qint64 len)

Переопределяет: QIODevice::writeData(const char *data, qint64 maxSize).

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qfiledevice.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API