Spec-Zone.ru › Qt 5.11

Класс QFileDevice

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

Заголовок: #include <QFileDevice>
qmake: QT += core
С момента: Qt 5.0
Наследуется от: QIODevice
Наследуется в:

QFile и QSaveFile

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

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

Типы публичного доступа

перечисление FileError { NoError, ReadError, WriteError, FatalError, ..., CopyError }
перечисление FileHandleFlag { AutoCloseHandle, DontCloseHandle }
флаги FileHandleFlags
перечисление FileTime { FileAccessTime, FileBirthTime, FileMetadataChangeTime, FileModificationTime }
перечисление MemoryMapFlags { NoOptions, MapPrivateOption }
перечисление Permission { ReadOwner, WriteOwner, ExeOwner, ReadUser, ..., ExeOther }
флаги 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
  • 44 публичных функций, унаследованных от QIODevice
  • 32 публичных функций, унаследованных от QObject

Реализованные защищённые функции

виртуальный qint64 readData(char *data, qint64 len) override
виртуальный qint64 readLineData(char *data, qint64 maxlen) override
виртуальный qint64 writeData(const char *data, qint64 len) override
  • 5 защищённых функций, унаследованных от QIODevice
  • 9 защищённых функций, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 публичный слот, унаследованный от QObject
  • 6 сигналов, унаследованных от QIODevice
  • 2 сигналов, унаследованных от QObject
  • 11 статических публичных членов, унаследованных от QObject
  • 5 защищённых функций, унаследованных от QIODevice
  • 9 защищённых функций, унаследованных от QObject

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

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

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 Файл не удалось скопировать.

enum QFileDevice::FileHandleFlagфлаги QFileDevice::FileHandleFlags

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

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

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

enum QFileDevice::FileTime

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

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

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

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

enum QFileDevice::MemoryMapFlags

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

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

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

enum QFileDevice::Permissionflags QFileDevice::Permissions

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

Постоянная Значение Описание
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>. Он хранит объединённое по OR сочетание значений Permission.

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

[virtual] QFileDevice::~QFileDevice()

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

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

Переопределено из QIODevice::atEnd().

Возвращает 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 возвращается пустая строка.

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().

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

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

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

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

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

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

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

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

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

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

Возвращает полную комбинацию разрешений QFile::Permission для файла, объединённую операцией ИЛИ.

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

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

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

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

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

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

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

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

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

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

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

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

Переопределено из QIODevice::seek().

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

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

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().

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

Для обычных пустых файлов в 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().

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

Spec-Zone.ru

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