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();

    }

原文地址:https://www.cnblogs.com/gd-luojialin/p/9215774.html