Класс QFileDevice
Класс QFileDevice предоставляет интерфейс для чтения из открытых файлов и записи в них. Подробнее...
| Заголовок: | #include <QFileDevice> |
| qmake: | QT += core |
| С момента: | Qt 5.0 |
| Наследует: | QIODevice |
| Наследуется от: |
Примечание: Все функции в этом классе являются повторно-входными.
Открытые типы
| Перечисление | 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 |
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 10 статических публичных членов, унаследованных от QObject
Реализованные защищенные функции
| виртуальный qint64 | readData(char *data, qint64 len) override |
| виртуальный qint64 | readLineData(char *data, qint64 maxlen) override |
| виртуальный qint64 | writeData(const char *data, qint64 len) override |
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 публичный слот, унаследованный от QObject
- 6 сигналов, унаследованных от QIODevice
- 2 сигнала, унаследованных от 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::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().
Возвращает 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. Файл должен быть открыт для успешного выполнения операции map, но файл не обязательно должен оставаться открытым после того, как память будет отображена. При уничтожении 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/qt-5.12/qfiledevice.html