zoukankan      html  css  js  c++  java
  • 20二进制文件操作

    QDataStream提供了基于QIODevice的二进制数据的序列化。数据流是一种二进制流,这种流完全不依赖于底层操作系统、CPU 或者字节顺序(大端或小端)。例如,在安装了 Windows 平台的 PC 上面写入的一个数据流,可以不经过任何处理,直接拿到运行了 Solaris 的 SPARC 机器上读取。由于数据流就是二进制流,因此我们也可以直接读写没有编码的二进制数据,例如图像、视频、音频等。

    QDataStream既能够存取 C++ 基本类型,如 int、char、short 等,也可以存取复杂的数据类型,例如自定义的类。实际上,QDataStream对于类的存储,是将复杂的类分割为很多基本单元实现的。

    写文件操作

    void Widget::ReadFile()

    {

          //新建本级目录下../test.txt的文件

             QFile writeFile(QString("../test.txt"));

             //创建数据流,与file文件相关联

             QDataStream in(&writeFile);

          //打开文件,只写方式

             bool bIsOK=writeFile.open(QIODevice::WriteOnly);

             if(bIsOK==true)

             {

            //往数据流中写数据,相当于往文件里写数据

                 QString strBuf="初学Qt";

                 in<<strBuf<<250;

             }

            writeFile.close();

    }

    读文件操作

    void Widget::WriteFile()

    {

            QFile readFile("../test.txt");

            QDataStream out(&readFile);

            //打开文件,只读方式

            bool bIsOk=readFile.open(QIODevice::ReadOnly);

            if(bIsOk==true)

            {

                QString str;

                int a;

                out>>str>>a;

                qDebug()<<str<<a;

            }

            readFile.close();

    }

    注意:必须按照写入的顺序,将数据读取出来。顺序颠倒的话,程序行为是不确定的,严重时会直接造成程序崩溃。

    写入时,先写字符串,再到数值。  QString strBuf="初学Qt";in<<strBuf<<250;

    那么读取时,也必须字符串,再到数值。  out>>str>>a;

  • 相关阅读:
    比较.NET程序集(DLL或EXE)是否相同
    [转] JavaScript数组去重(12种方法)
    [转] js网络请求跨域问题汇总(携带cookie)
    [转] JS中arr.forEach()如何跳出循环
    [转] vue前端异常监控sentry实践
    [转] vue父组件触发子组件事件
    [转] vue 自定义组件使用v-model
    [转] Nginx配置性能优化
    [转] linux 查找文本过滤grep正则表达式命令详解用法
    [转] Nginx配置中的location、root、alias
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/9215770.html
Copyright © 2011-2022 走看看