#include <stdint.h>
#include <stdio.h>
#include<string>
using namespace std;

写入  

uint8_t *data=new uint8_t[20];//模拟数据
    for(int i=0;i<20;i++){
        data[i]=i;
    }
    //二进制文件的地址及文件名
    string qFileName = "D:/untitled1/test.raw";
    //以wb的打开方式打开文件raw
    FILE* fp = fopen(“文件名.c_str()”,"打开方式");
    if(fp!=NULL){
        //1次性将data的指针的20个数据1次性写入fp文件中
        fwrite(data,1,20,fp);
        fclose(fp);用完不关闭,遇到了第二次再用数据读不完整的问题
}
delete data;

读取

//定义临时容器用来存储raw文件中的数据
    uint8_t* data = new uint8_t [20];
    //要读取的二进制文件地址及文件名
    QString qFileName = "D:/untitled1/test.raw";
    FILE* fp = fopen(qFileName.toLocal8Bit(),"rb");
    if(fp != NULL){
 //1次性读取fp二进制文件中的20个数据,保存到data容器中
        fread(data,1,20,fp);
        fclose(fp);
    }
    delete data;

在close(fp)之前, 每次fread(data,1,20,fp)读取(0~19个数据)完,文件中的指针就会往后移20个,意思是第二次 fread(data,1,20,fp)读的时候,取到的是第20~39个数据,以此类推,实现遍历整个文件;

文件的打开方式 

打开方式

含义

r

以只读方式打开文件,该文件必须存在

r+

以可读写方式打开文件,该文件必须存在

rb+

读写打开一个二进制文件,只允许读写数据

rt+

读写打开一个文本文件,允许读和写

w

只写打开文件,若文件存在则内容清空,若不存在则建立该文件

w+

可读写打开文件,若文件存在则内容清空,若不存在则建立该文件

a

附加的方式打开只写文件,若文件不存在则新建,若存在则追加数据

a+

附加的方式打开可读写文件,若文件不存在则新建,若存在则追加数据

wb

只写打开或新建一个二进制文件,只允许写数据

wb+

读写打开或新建一个二进制文件,允许读和写

wt+

读写打开或建立一个文本文件,允许读写

at+

读写打开一个文本文件,允许读或在文本末追加数据

ab+

读写打开一个二进制文件,允许读或在文件末追加数据

 

上述的形态字符串都可以再加一个b字符,如rb,w+b或ab+等组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件,

+ :可读可写

b :二进制文件

t  :文本文件

r :读数据

w  :写数据

a  :追加的方式