当前位置: 首页 > news >正文

QT——文件操作类 QFile和QTextStream

QFile类

QFile是Qt框架中用于文件I/O操作的类,继承自QIODevice,提供了文件读写的基本功能。

主要功能

  1. 文件读写:支持文本和二进制文件的读写操作

  2. 文件信息:可以获取文件大小、修改日期等信息

  3. 文件操作:支持重命名、移动、删除等操作

  4. 错误处理:提供错误检测和处理机制

常用方法

方法描述示例
open()打开文件,需指定模式file.open(QIODevice::ReadOnly)
close()关闭文件file.close()
read()读取文件内容file.read(100)
write()写入文件内容file.write("data")
exists()检查文件是否存在file.exists()
remove()删除文件file.remove()
copy()复制文件file.copy("newfile.txt")

基本用法

(1) 打开文件
#include <QFile>
#include <QDebug>void readFile() {QFile file("example.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { // 以只读文本模式打开qDebug() << "无法打开文件!";return;}// 读取文件内容(后续用 QTextStream 处理)// ...file.close(); // 关闭文件
}
  • 打开模式
    • QIODevice::ReadOnly:只读模式。
    • QIODevice::WriteOnly:只写模式(会清空原有内容)。
    • QIODevice::Append:追加模式(在文件末尾写入)。
    • QIODevice::Text:文本模式(自动处理换行符)。
(2) 读取文件内容(直接读取)
QFile file("example.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {while (!file.atEnd()) {QByteArray line = file.readLine(); // 逐行读取qDebug() << line;}file.close();
}
  • readLine():读取一行文本(返回 QByteArray)。
  • readAll():一次性读取整个文件内容。
(3) 写入文件
QFile file("output.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {file.write("Hello, Qt File!\n"); // 写入字符串file.write("另一行文本\n");file.close();
}

QTextStream类

QTextStream提供了方便的文本读写功能,可以处理不同编码的文本文件。

主要特性

特性描述
字符编码支持UTF-8、UTF-16等多种编码
格式化提供数字精度、基数等格式化功能
流操作支持<<和>>操作符
换行处理自动处理不同操作系统的换行符
缓冲机制提高读写效率

常用方法

方法描述示例
setCodec()设置字符编码stream.setCodec("UTF-8")
readLine()读取一行文本stream.readLine()
readAll()读取全部内容stream.readAll()
<<操作符写入数据stream << "Text" << 123
>>操作符读取数据stream >> str >> num

基本用法

(1) 读取文本文件
#include <QTextStream>
#include <QFile>
#include <QDebug>void readWithTextStream() {QFile file("example.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {qDebug() << "无法打开文件!";return;}QTextStream in(&file); // 绑定 QFile 对象while (!in.atEnd()) {QString line = in.readLine(); // 逐行读取qDebug() << line;}file.close();
}
  • QTextStream 优势
    • 自动处理文本编码(如 UTF-8)。
    • 支持格式化输入输出(类似 C++ 的 iostream)。
(2) 写入文本文件
void writeWithTextStream() {QFile file("output.txt");if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&file); // 绑定 QFile 对象out << "Hello, Qt TextStream!\n"; // 格式化输出out << "数字: " << 42 << "\n";out << "浮点数: " << 3.14 << "\n";file.close();}
}
  • << 运算符:支持多种数据类型(QStringintdouble 等)。
(3) 设置编码和格式
QTextStream out(&file);
out.setEncoding(QStringConverter::Utf8); // 设置编码为 UTF-8
out.setFieldAlignment(QTextStream::AlignLeft); // 左对齐
out.setNumberFlags(QTextStream::ShowBase); // 显示数字进制(如 0x1A)

总结

类名用途特点
QFile文件读写支持二进制和文本模式,直接操作文件。
QTextStream文本流处理格式化输入输出,自动处理编码和换行符。

适用场景

  • QFile:适合直接读写二进制数据或简单文本。
  • QTextStream:适合结构化文本处理(如 CSV、日志文件)。
http://www.dtcms.com/a/278523.html

相关文章:

  • 【同等学力-计算机-真题解析】离散数学-图论(握手定理、欧拉公式)
  • ARMv8.1原子操作指令(ll_sc/lse)
  • #Paper Reading# Apple Intelligence Foundation Language Models
  • 【Linux网络】:HTTP(应用层协议)
  • 深入解析 Transformer:开启自然语言处理新时代的革命性模型
  • uni-app在安卓设备上获取 (WIFI 【和】以太网) ip 和 MAC
  • 游戏框架笔记
  • SAP ERP与微软ERP dynamics对比,两款云ERP产品有什么区别?
  • [个人笔记] WSL 完整使用指南及 Claude Code 配置记录
  • 019_工具集成与外部API调用
  • 【HarmonyOS】元服务概念详解
  • ubuntu系统在线安装postgres
  • 【视频格式转换】.264格式转为mp4格式
  • React Three Fiber 实现 3D 模型视图切换、显隐边框、显隐坐标轴
  • R 语言科研绘图第 64 期 --- 哑铃图
  • Python 基础语法2:组合数据类型、异常
  • Kafka——集群核心参数配置
  • TensorFlow深度学习实战(26)——生成对抗网络详解与实现
  • [Dify]-进阶1- Dify 支持的多种 AI 模型解析与选择建议
  • 排序算法(二):插入排序
  • 数据安全防护技术:筑牢信息安全防线
  • IoC容器深度解析:架构、原理与实现
  • 区块链开发协作工具全景图:从智能合约管理到去中心化治理
  • LabVIEW浏览器ActiveX事件交互
  • Oracle物化视图函数使用注意事项
  • 新型eSIM攻击技术可克隆用户资料并劫持手机身份
  • AWS RDS PostgreSQL可观测性最佳实践
  • crawl4ai--bitcointalk爬虫实战项目
  • ubuntu安装kafka(无zk版本)
  • Leaflet面试题及答案(81-100)