22内存文件操作
前面介绍了基本文件操作、数据流文件操作和文本文件操作。本次简单介绍内存文件操作。内存文件本质就是建立一块公共内存区域,可以往里读、写。
下面我们使用一段代码来看看QBuffer的有关操作:
QBuffer memFile(); //内存文件对象
//打开
bool bIsOk=memFile.open(QIODevice::WriteOnly);
if(bIsOk==true)
{
memFile.write("1111111111");
memFile.write("2222222222");
}
memFile.close();
//结果打印
qDebug()<<memFile.buffer();
QBuffer::QBuffer(QByteArray * byteArray, QObject * parent = 0)
也可以向内存区域再存放一个字节数组
QByteArray arr;
QBuffer memFile(&arr);
bool bIsOk=memFile.open(QIODevice::WriteOnly);
if(bIsOk==true)
{
memFile.write("1111111111");
memFile.write("2222222222");
}
memFile.close();
qDebug()<<arr;
内存文件也有基本文件的操作
bool QBuffer::atEnd() const [virtual]
qint64 QBuffer::pos() const [virtual]
bool QBuffer::seek(qint64 pos) [virtual]
void QBuffer::setData(const char * data, int size)
qint64 QBuffer::size() const [virtual]
qint64 QBuffer::writeData(const char * data, qint64 len) [virtual protected]
qint64 QBuffer::readData(char * data, qint64 len) [virtual protected]
void QBuffer::setBuffer(QByteArray * byteArray)
QByteArray byteArray("abc");
QBuffer buffer;
buffer.setBuffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
buffer.seek(3);
buffer.write("def", 3);
buffer.close();
// byteArray == "abcdef"
QdataStream与Qbuffer的使用:
全局内存区
QBuffer memFile;
写操作
{
//打开文件,只写方式
QDataStream in;
in.setDevice(&memFile);
//等价于上面 QDataStream in(&memFile);
bool bIsOK=memFile.open(QIODevice::WriteOnly);
if(bIsOK==true)
{
QString strBuf="初学Qt";
in<<strBuf<<250;
}
memFile.close();
}
读操作
{
//打开文件,只读方式
QDataStream out(&memFile);
bool bIsOk=memFile.open(QIODevice::ReadOnly);
if(bIsOk==true)
{
QString str;
int a;
out>>str>>a;
qDebug()<<str<<a;
}
memFile.close();
}