- Qt 6.9
- Qt Core
- C++ Classes
- QIODeviceBase
- Qt 6.9.3 Reference Documentation

# QIODeviceBase Class

Base class for QIODevice that provides flags describing the mode in which a device is opened. More...

Header: | `#include <QIODevice>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Core)` `target_link_libraries(mytarget PRIVATE Qt6::Core)`
qmake: | `QT += core`
Inherited By: | QDataStream, QDebug, QIODevice, and QTextStream

- List of all members, including inherited members

## Public Types

flags | OpenMode
enum | OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, Append, …, ExistingOnly }

## Detailed Description

## Member Type Documentation

### enum QIODeviceBase::OpenModeFlag
flags QIODeviceBase::OpenMode

This enum is used with QIODevice::open() to describe the mode in which a device is opened. It is also returned by QIODevice::openMode().

Constant | Value | Description
--- | --- | ---
`QIODeviceBase::NotOpen` | `0x0000` | The device is not open.
`QIODeviceBase::ReadOnly` | `0x0001` | The device is open for reading.
`QIODeviceBase::WriteOnly` | `0x0002` | The device is open for writing. Note that, for file-system subclasses (e.g. QFile), this mode implies Truncate unless combined with ReadOnly, Append or NewOnly.
`QIODeviceBase::ReadWrite` | `ReadOnly | WriteOnly` | The device is open for reading and writing.
`QIODeviceBase::Append` | `0x0004` | The device is opened in append mode so that all data is written to the end of the file.
`QIODeviceBase::Truncate` | `0x0008` | If possible, the device is truncated before it is opened. All earlier contents of the device are lost.
`QIODeviceBase::Text` | `0x0010` | When reading, the end-of-line terminators are translated to '\n'. When writing, the end-of-line terminators are translated to the local encoding, for example '\r\n' for Win32.
`QIODeviceBase::Unbuffered` | `0x0020` | Any buffer in the device is bypassed.

`QIODeviceBase::NewOnly`

`0x0040`

Fail if the file to be opened already exists. Create and open the file only if it does not exist. There is a guarantee from the operating system that you are the only one creating and opening the file. Note that this mode implies WriteOnly, and combining it with ReadWrite is allowed. This flag currently only affects QFile. Other classes might use this flag in the future, but until then using this flag with any classes other than QFile may result in undefined behavior. (since Qt 5.11)

`QIODeviceBase::ExistingOnly`

`0x0080`

Fail if the file to be opened does not exist. This flag must be specified alongside ReadOnly, WriteOnly, or ReadWrite. Note that using this flag with ReadOnly alone is redundant, as ReadOnly already fails when the file does not exist. This flag currently only affects QFile. Other classes might use this flag in the future, but until then using this flag with any classes other than QFile may result in undefined behavior. (since Qt 5.11)

Certain flags, such as `Unbuffered` and `Truncate`, are meaningless when used with some subclasses. Some of these restrictions are implied by the type of device that is represented by a subclass. In other cases, the restriction may be due to the implementation, or may be imposed by the underlying platform; for example, QTcpSocket does not support `Unbuffered` mode, and limitations in the native API prevent QFile from supporting `Unbuffered` on Windows.

The OpenMode type is a typedef for QFlags<OpenModeFlag>. It stores an OR combination of OpenModeFlag values.