22内存文件操作
前面介绍了基本文件操作、数据流文件操作和文本文件操作。本次简单介绍内存文件操作。内存文件本质就是建立一块公共内存区域,可以往里读、写。 ? 下面我们使用一段代码来看看QBuffer的有关操作: QBuffer memFile();?????????????? //内存文件对象 //打开 ??? bool bIsOk=memFile.open(QIODevice::WriteOnly); ??? if(bIsOk==true) ??? { ??????? memFile.write("2222222222"); ??????? 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("2222222222"); ??????? 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(); ??? } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |