当前位置:   article > 正文

学习记录-Qt文件的读写和删除等操作_qt 打开文件删除相关字节

qt 打开文件删除相关字节

Qt提供了QFile类对文件操作,Qt还提了QTextStream类和QDataStream类对文件操作,对于处理临时文件可以使用QTemporaryFile,而获取文件信息则可以使用QFileInfo。

目录可以使用QDir,监视文件和目录变化使用QFileSystemWatcher。

QFile 类提供了读写文件的接口,QFile类可以读写文本文件、二进制文件和Qt资源文件,也可以用更方便的QTextStream,QDataStream 类读取文本文件和二进制文件。
打开文件用open函数,关闭文件用close函数。QFile中可以使用QIODevice中继承的readLine()函数读去一行数据。
QTextStream类提供了方便的接口来读写文本,QTextStream可以操作QIODevice、QByteArray和QString,QTextStream使用流操作符,可以方便地读写单词、行和数字。
QDataStream类提供了将二进制文件串行化的功能,QDataStream实现了基本数据类型的串行化。

QDataStream
以下代码是实际工程中截取的文件的读取和保存,采用QDataStream流的方式:

  1. <pre name="code" class="cpp">//成品测试 打开配置文件
  2. void MainWindow::openProfunConfigFile()
  3. {
  4. QString path = QFileDialog::getOpenFileName(this, tr("打开文件"), "./config", tr("Settings (*.*);;(*.prof)"));
  5. if(!path.isEmpty()) {
  6. QFile file(path);
  7. if (!file.open(QIODevice::ReadOnly)) {
  8. QMessageBox::warning(this, tr("读取文件"), tr("无法打开文件:\n%1").arg(path));
  9. return;
  10. }
  11. QDataStream in(&file);
  12. in.setVersion(QDataStream::Qt_4_7);
  13. //in.setByteOrder(QDataStream::LittleEndian); //编码方式:低字节在前
  14. // 检查魔术数字
  15. quint32 magic;
  16. qint32 version;
  17. in >> magic;
  18. in >> version;
  19. if (magic != 0x12345678) {
  20. QMessageBox::warning(this, tr("警告"), tr("无法识别文件:\n%1").arg(path));
  21. return;
  22. }
  23. //读取版本信息
  24. if(123 != version){
  25. QMessageBox::warning(this, tr("警告"), tr("当前版本不支持的文件:\n%1").arg(path));
  26. return;
  27. }
  28. for(int i=0;i<(int)sizeof(encap_testfile_t);i++){
  29. in >> g_tProfuncTestFile.buff[i];
  30. }
  31. file.close();
  32. // QFileInfo fi = QFileInfo(file);
  33. // setWindowTitle(fi.fileName());
  34. //2014-12-12
  35. //保存文件名
  36. myApp::profunLastConfigFile = QFileInfo(file).fileName();
  37. myApp::WriteConfig(); //保存配置文件
  38. profunc_read_test_file_show(g_tProfuncTestFile.buff);
  39. }
  40. }
  41. //成品测试 保存测试文件
  42. void MainWindow::saveProfunConfigFile()
  43. {
  44. //获取文件路径
  45. QString path = QFileDialog::getSaveFileName(this, tr("保存文件"), myApp::AppPath + "config", tr("Setting Files(*.*);;(*.prof)"));
  46. if(!path.isEmpty()) {//判断路径是否为空
  47. QFile file(path); //定义指定路径文件
  48. if (!file.open(QIODevice::WriteOnly)) {//只读方式打开
  49. QMessageBox::warning(this, tr("写入文件"), tr("无法打开文件:\n%1").arg(path));
  50. return;
  51. }
  52. quint32 magic = 0x12345678;//幻数
  53. qint32 version = 123;
  54. QDataStream out(&file); //二进制文本流方式定义
  55. out.setVersion(QDataStream::Qt_4_7); //设定版本
  56. //out.setByteOrder(QDataStream::LittleEndian); //编码方式:低字节在前
  57. out << magic; //写入幻数
  58. out << version;
  59. //读取数据,自定义格式
  60. for(int i=0;i<(int)sizeof(encap_testfile_t);i++){
  61. out << (quint8)g_tProfuncTestFile.buff[i];
  62. }
  63. file.close();
  64. //2014-12-12
  65. myApp::profunLastConfigFile = QFileInfo(file).fileName();
  66. myApp::WriteConfig(); //保存配置文件
  67. }
  68. }


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/652683
推荐阅读
相关标签
  

闽ICP备14008679号