Qt之文件保存的技巧

本文介绍了通过将结构体直接写入文件实现简单的文件加密,以此提高文件安全性。作者对比了传统文本写入和结构体写入的方式,并提醒读者这种方法仅适用于结构体大小固定的情况。当结构体包含如QString等动态大小的成员时,直接读写会导致异常。为解决这一问题,作者建议将文件内容压缩后再写入,以确保数据的一致性。
摘要由CSDN通过智能技术生成

今天偷懒做法,在保存文件的时候,直接把结构体写进了文件中,结果发现,这样打开文件的话读取到的都是二进制,如果其他人不知道你的结构体排布,这不也是相当于一种文件加密了嘛,具体实现是这样的

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();
}

唉,真的是越简单越想不到,这种方法还方便了读取文件时的管理&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值