QIODevice 类学习笔记

QIODevice 类学习笔记

Isaaccwoo 2015年12月10日

一、       简介

QIODevice用于对输入输出设备进行管理。输入设备有两种类型,一种是随机访问设备(Random-accessdevices),如文件、缓冲区等;另一种是时序设备(Sequential device),如网络、进程等。可以通过isSequential()函数分辨设备是哪种类型的。

二、       自定义类型

设备的打开方式:OpenMode

enum QIODevice::OpenModeFlag

flags QIODevice::OpenMode

Constant

Value

Description

QIODevice::NotOpen

0x0000

The device is not open.

QIODevice::ReadOnly

0x0001

The device is open for reading.

QIODevice::WriteOnly

0x0002

The device is open for writing. Note that this mode implies Truncate.

QIODevice::ReadWrite

ReadOnly | WriteOnly

The device is open for reading and writing.

QIODevice::Append

0x0004

The device is opened in append mode so that all data is written to the end of the file.

QIODevice::Truncate

0x0008

If possible, the device is truncated before it is opened. All earlier contents of the device are lost.

QIODevice::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.

QIODevice::Unbuffered

0x0020

Any buffer in the device is bypassed.

 

 

三、       正确的打开方式  输入输出设备的使用方法

1.            构造与析构

函数

说明

QIODevice()

 

QIODevice(QObject * parent)

 

~QIODevice()

继承类需自行保证close()

 

2.            OpenMode

返回类型

函数

说明

OpenMode

openMode() const

QIODevice::OpenMode

void [protected]

setOpenMode(OpenMode openMode)

 

bool

isOpen() const

QIODevice::NotOpen

bool

isReadable() const

QIODevice::ReadOnly

bool

isWritable() const

QIODevice::WriteOnly

bool

isTextModeEnabled() const

QIODevice::Text

void

setTextModeEnabled(bool enabled)

QIODevice::Text

bool [virtual]

isSequential() const

 

 

3.            打开关闭设备

返回类型

函数

说明

bool [virtual]

open(OpenMode mode)

 

bool

isOpen() const

 

void [virtual]

close()

 

void [signal]

aboutToClose()

 

Bool [virtual]

reset()

重打开设备。

不适用于QIODevice::Text类设备。

 

4.            数据读写操作及控制

输入函数

返回类型

函数

说明

bool [virtual]

waitForReadyRead(int msecs)

等待可读

void [signal]

readyRead()

中断式可读

qint64 [virtual]

bytesAvailable() const

查询式可读

qint64 [protected]

[pure virtual]

readData(char * data, qint64 maxSize)

需要在继承类重实现的

读函数

qint64

read(char * data, qint64 maxSize)

QByteArray

read(qint64 maxSize)

.

qint64

peek(char * data, qint64 maxSize)

“偷看”

QByteArray

peek(qint64 maxSize)

.

QByteArray

readAll()

读全部

bool [virtual]

canReadLine() const

可读行

qint64 [virtual] [protected]

readLineData(char * data, qint64 maxSize)

可以在继承类重实现的

读行函数

qint64

readLine(char * data, qint64 maxSize)

读行

(maxSize包括行结束字符)

QByteArray

readLine(qint64 maxSize = 0)

读行

bool

getChar(char * c)

读char

void

ungetChar(char c)

undo char

void [signal]

readChannelFinished()

输入通道结束。

但此时可能仍有数据可读。

输出函数

返回类型

函数

说明

bool [virtual]

waitForBytesWritten(int msecs)

等待已写

void [signal]

bytesWritten(qint64 bytes)

中断式已写

qint64 [virtual]

bytesToWrite() const

查询式写完

qint64 [protected]

[pure virtual]

writeData(const char * data,

qint64 maxSize)

需要在继承类重实现的

写函数

qint64

write(const char * data, qint64 maxSize)

qint64

write(const char * data)

.

qint64

write(const QByteArray & byteArray)

.

bool

putChar(char c)

写char

isSequential()不同有区别的函数

返回类型

函数

说明

qint64 [virtual]

pos() const

 

bool [virtual]

seek(qint64 pos)

 

qint64 [virtual]

size() const

随机访问设备为区域大小,时序设备为bytesAvailable()

其他函数

返回类型

函数

说明

bool [virtual]

atEnd() const

 

QString

errorString() const

 

void [protected]

setErrorString(const QString & str)

 

注:qint64返回值一般原则为,错误返回-1,成功返回>=0


你可能感兴趣的:(Qt)