Класс QFileDevice
Класс QFileDevice предоставляет интерфейс для чтения из и записи в открытые файлы. Подробнее...
| Заголовок: | #include <QFileDevice> |
| qmake: | QT += core |
| С тех пор: | Qt 5.0 |
| Наследует: | QIODevice |
| Наследуется: |
Этот класс был представлен в Qt 5.0.
Примечание: Все функции в этом классе являются реентерабельными.
Типы публичного доступа
| перечисление | Ошибка файла { Нет ошибки, Ошибка чтения, Ошибка записи, Критическая ошибка, Ошибка ресурса, …, Ошибка копирования } |
| перечисление | Флаг дескриптора файла { Автоматически закрывать, Не закрывать } |
| флаги | Флаги дескриптора файла |
| перечисление | Время файла { Время доступа к файлу, Время создания файла, Время изменения метаданных файла, Время изменения файла } |
| перечисление | Флаги отображения в памяти { Без опций, Опция приватного отображения } |
| перечисление | Разрешения { Чтение владельцем, Запись владельцем, Исполнение владельцем, Чтение пользователем, Запись пользователем, …, Исполнение другим } |
| флаги | Разрешения |
Функции публичного доступа
| виртуальный | ~QFileDevice() |
| QFileDevice::Ошибка файла | ошибка() const |
| виртуальный QString | имяФайла() const |
| QDateTime | времяФайла(QFileDevice::Время файла time) const |
| bool | сброс() |
| int | дескриптор() const |
| uchar * | отобразить(qint64 offset, qint64 size, QFileDevice::Флаги отображения в памяти flags = Без опций) |
| виртуальный QFileDevice::Разрешения | разрешения() const |
| виртуальный bool | изменитьРазмер(qint64 sz) |
| bool | установитьВремяФайла(const QDateTime &newDate, QFileDevice::Время файла fileTime) |
| виртуальный bool | установитьРазрешения(QFileDevice::Разрешения permissions) |
| bool | освободитьОтображение(uchar *address) |
| void | сброситьОшибка() |
Реализованные функции публичного доступа
| виртуальный bool | конецФайла() const override |
| виртуальный void | закрыть() override |
| виртуальный bool | последовательный() const override |
| виртуальный qint64 | позиция() const override |
| виртуальный bool | переместитьПозицию(qint64 pos) override |
| виртуальный qint64 | размер() const override |
Переопределённые защищённые функции
| virtual qint64 | readData(char *data, qint64 len) override |
| virtual qint64 | readLineData(char *data, qint64 maxlen) override |
| virtual 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.
| Постоянная | Значение | Описание |
|---|---|---|
QFileDevice::AutoCloseHandle |
0x0001 |
Дескриптор файла, переданный в open(), должен быть закрыт с помощью close(). По умолчанию close просто сбрасывает буфер файла, и приложение отвечает за закрытие дескриптора файла. При открытии файла по имени этот флаг игнорируется, так как Qt всегда владеет дескриптором файла и должен его закрыть. |
QFileDevice::DontCloseHandle |
0 |
Если явно не закрыт, базовый дескриптор файла остается открытым при уничтожении объекта QFile. |
Тип FileHandleFlags — это псевдоним для QFlags<FileHandleFlag>. Он хранит логическое ИЛИ сочетание значений FileHandleFlag.
перечисление 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::MemoryMapFlags
Это перечисление описывает специальные параметры, которые могут использоваться функцией map().
| Постоянная | Значение | Описание |
|---|---|---|
QFileDevice::NoOptions |
0 |
Нет параметров. |
QFileDevice::MapPrivateOption |
0x0001 |
Карта памяти будет личной, поэтому любые изменения не будут видны другим процессам и не будут записаны на диск. Все такие изменения будут потеряны при размонтировании памяти. Не определено, будут ли изменения, внесенные в файл после создания карты, видны через карту памяти. Это значение перечисления было введено в Qt 5.4. |
Это перечисление было введено или изменено в Qt 4.4.
перечисление QFileDevice::Permissionфлаги 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>. Он хранит логическое ИЛИ сочетание значений 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 возвращается пустая строка.
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() немедленно не расширит файл. Если выполняется запись в этой позиции, файл будет расширен. Содержимое файла между предыдущим концом файла и новыми записанными данными НЕОПРЕДЕЛЁНО и зависит от платформы и файловой системы.
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-5.15/qfiledevice.html