#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 :追加的方式