20二进制文件操作

Posted gd-luojialin

tags:

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

 

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

Python学习笔记015——文件file的常规操作之二(二进制文件)

kubernetes 二进制安装(v1.20.15)加塞一个工作节点

kubernetes 二进制安装(v1.20.15)部署WorkNode节点

kubernetes 二进制安装(v1.20.16)部署 master

notepad++查看二进制文件

17如何对字符串进行左, 右, 居中对齐 18如何去掉字符串中不需要的字符 19如何读写文本文件 20如何处理二进制文件 21如何设置文件的缓冲