zoukankan      html  css  js  c++  java
  • 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();

        }

  • 相关阅读:
    深入理解Java内存(图解堆栈)
    Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。
    Android开发中碰到的一个ANR问题。
    Android 解决通过自定义设置打开热点后手机搜索不到热点的问题。
    Android 反射获取一个方法(方法的参数不一样)
    Android 通过反射获取DatePicker 中的控件,并改变其颜色
    Android 解析标准的点击第三方文件管理器中的视频的intent
    Fragment已经被added了导致的异常。
    FragmentActivity + Fragment + Fragment使用过程中出现的bug
    Android学习笔记之SoftReference软引用,弱引用WeakReference
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/9215774.html
Copyright © 2011-2022 走看看