当前位置: 首页 > 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.lryc.cn/news/588040.html

相关文章:

  • 第一次接触自动化监测,需要付费厂家安装服务吗?比人工测量主要区别是啥?
  • 用Python向PDF添加文本:精确插入文本到PDF文档
  • 2024-2025-2 山东大学《毛概》期末(回忆版)
  • 复习笔记 38
  • linux下的消息队列数据收发
  • “国乙黑月光”指的是谁?
  • 动态规划题解——单词拆分【LeetCode】
  • 【字节跳动】数据挖掘面试题0017:推荐算法:双塔模型,怎么把内容精准地推送给用户
  • 设计模式(行为型)-迭代器模式
  • iOS App 安全加固全流程:静态 + 动态混淆对抗逆向攻击实录
  • Linux进程优先级机制深度解析:从Nice值到实时调度
  • 基于MATLAB的LSTM长短期记忆神经网络的时间序列数据预测方法应用
  • .NET ExpandoObject 技术原理解析
  • C#/.NET/.NET Core技术前沿周刊 | 第 46 期(2025年7.7-7.13)
  • 如何用深度学习实现图像风格迁移
  • 面试150 路径总和
  • 电脑升级Experience
  • WPF自定义日历选择控件
  • ZYNQ双核通信终极指南:FreeRTOS移植+OpenAMP双核通信+固化实战
  • spark广播表大小超过Spark默认的8GB限制
  • 大数据系列之:通过trino查询hive表
  • pyspark中map算子和flatmap算子
  • kettle从入门到精通 第103课 ETL之kettle kettle读取redis中的Hash数据
  • IOS开发者账号如何添加 uuid 原创
  • 图机器学习(1)——图论基础
  • [硬件电路-22]: 为什么模拟电路信号处理运算的精度不如数字信号处理运算?
  • flink 中配置hadoop 遇到问题解决
  • 基于MaxCompute MaxFrame 汽车自动驾驶数据预处理最佳实践
  • WST2078 N+P 双通道 MOSFET 在蓝牙耳机中的技术适配
  • FreeSWITCH fifo模块排队并动态播放排队位置