今天偷懒做法,在保存文件的时候,直接把结构体写进了文件中,结果发现,这样打开文件的话读取到的都是二进制,如果其他人不知道你的结构体排布,这不也是相当于一种文件加密了嘛,具体实现是这样的
1、老办法:
//这种方法下文件内容打开就能看见,安全性非常差
QFile f(filepath);
QTextStream txtOutput(&f);
txtOutput.setCodec("UTF-8");
if(f.open(QIODevice::WriteOnly | QIODevice::Text)){
txtOutput <<"Root: Hello world!!!" <<endl;
f.close();
}
2、新方法
typedef struct {
QString data;
}FileData;
// 写文件
QFile f(filepath);
if(f.open(QIODevice::WriteOnly | QIODevice::Text)){
FileData filedata;
filedata.data = "Root: Hello world!!!";
f.write((const char *)&filedata,sizeof(filedata));
f.close();
}
//读文件
QFile f(filepath);
FileData filedata;
if(f.open(QIODevice::ReadOnly)){
QByteArray ba = f.readAll();
memcpy(&filedata,ba,sizeof(filedata));
f.close();
}
唉,真的是越简单越想不到,这种方法还方便了读取文件时的管理&