22内存文件操作

Posted gd-luojialin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();

    }

 


以上是关于22内存文件操作的主要内容,如果未能解决你的问题,请参考以下文章

使用一个内存流进行多个文件搜索迭代

22 Java学习之字符流(Reader和Writer)

mongodb自动关闭:页面文件太小,无法完成操作

Linux操作系统 内存管理用户操作和文件操作

学习笔记22读写文件(I/O操作)— 读文件

python 第22课 列表 内存分析 列表常用操作