使用QSaveFile类安全的读写文件

QSaveFile类也是一种I/O设备,来用来读写文本文件和二进制文件,但使用该类的话,在写入操作失败时不会导致已经存在的数据丢失。

该类在执行写操作时,会先将内容写入到一个临时文件中,如果没有错误发生,我们可以在最后调用其成员函数commit()来将临时文件中的内容移到目标文件中。这能确保目标文件中的数据在写操作发生错误时不会丢失数据,也不会出现部分写入的情况。所以,一般使用QSaveFile类向磁盘上保存整份文档。

QSaveFile会自动的检测写入过程中所出现的错误,例如无法写入全部的数据。它会记得有错误发生,并在commit()时放弃临时文件。

至于该类的使用,和QFile类似,使用open()函数打开文件,使用QDataStream或QTextStream类进行读写,也可以使用从QIODevice继承的函数read(),readLine(),write()等。但不同的是,不能调用close()函数,而应该调用commit()函数。如果没有调用commit()函数,则QSaveFile对象销毁时,会丢弃临时文件。

当然,当应用程序出错时,我们也可以主动放弃写入的数据,只要调用cancelWriting()即可,这样,即使以后又调用了commit(),也不会发生真正的保存文件操作。

使用该类,我们也可以跳过临时文件,直接将数据写入到目标文件中。上面我们说过,QSaveFile类会在和目标文件的同一目录下创建一个临时文件,并自动的进行重命名。但如果该目录的权限限制不允许创建文件呢。通常,在这种情况下,open()调用会失败。而为了解决这个问题,

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值