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

qt QFile详解

1、概述

QFile类是Qt框架中用于读取和写入文本和二进制文件资源的I/O工具类。它继承自QFileDevice类,后者又继承自QIODevice类。QFile类提供了一个接口,允许开发者以二进制模式或文本模式对文件进行读写操作。默认情况下,QFile假定文件内容为二进制,即不对文件中的字节执行任何转换。QFile类既可以单独使用,也可以与QTextStream或QDataStream类结合使用,以提高文件读写的效率和便利性。

2、重要方法

QFile类提供了多种方法来操作文件,以下是一些重要的方法:

  • 构造函数:QFile()、QFile(const QString &name)。其中,第二个构造函数允许在创建QFile对象时直接指定要操作的文件名(包含路径)。
  • setFileName():用于设置要操作的文件名。
  • open():以指定的模式打开文件。打开模式可以是只读、只写、读写、追加等,这些模式通过QIODevice类中定义的枚举值来指定。
  • read()readAll()readLine():用于从文件中读取数据。其中,read()方法允许读取指定大小的数据,readAll()方法读取整个文件的内容,readLine()方法按行读取文件内容。
  • write():用于将数据写入文件。
  • close():关闭文件。
  • size():返回文件的大小(以字节为单位)。
  • exists():检查文件是否存在。
  • remove():删除文件。

此外,QFile类还与QTextStream和QDataStream类紧密结合,提供了更高级的读写操作。QTextStream用于读写文本文件,支持多种编码格式;QDataStream用于读写二进制文件,支持跨平台的数据序列化。

3、重要信号

需要注意的是,与其他QIODevice子类不同,QFile不会发送QIODevice::aboutToClose()、QIODevice::bytesWritten()和QIODevice::readyRead()等信号。这意味着QFile不适合用于需要实时监测文件读写状态的场景。


4、重要操作模式

以下是QFile类中一些常见的操作模式及其简要介绍:

  • QIODevice::ReadOnly:只读模式。
  • QIODevice::WriteOnly:只写式。
  • QIODevice::ReadWrite:读写模式。
  • QIODevice::Append:追加模式。
  • QIODevice::Truncate:截断模式。
  • QIODevice::Text:文本模式。
#include <QFile>  
#include <QDebug>  
#include <QTextStream>  int main(int argc, char *argv[])  
{  // 创建QFile对象,并指定要操作的文件名  QFile file("example.txt");  // 以写模式打开文件  if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {  qDebug() << "文件打开失败";  return -1;  }  // 使用QTextStream写入文本数据到文件  QTextStream out(&file);  out << "Hello, Qt!\n";  out << "This is a test file.\n";  // 关闭文件  file.close();  // 以读模式重新打开文件  if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {  qDebug() << "文件打开失败";  return -1;  }  // 使用QTextStream读取文件内容  QTextStream in(&file);  QString line;  while (!in.atEnd()) {  line = in.readLine();  qDebug() << line;  }  // 关闭文件  file.close();  return 0;  
}

觉得有帮助的话,打赏一下呗。。

           

相关文章:

qt QFile详解

1、概述 QFile类是Qt框架中用于读取和写入文本和二进制文件资源的I/O工具类。它继承自QFileDevice类&#xff0c;后者又继承自QIODevice类。QFile类提供了一个接口&#xff0c;允许开发者以二进制模式或文本模式对文件进行读写操作。默认情况下&#xff0c;QFile假定文件内容为…...

ESP8266 自定义固件烧录-Tcpsocket固件

一、固件介绍 固件为自定义开发的一个适配物联网项目的开源固件&#xff0c;支持网页配网、支持网页tcpsocket服务器配置、支持串口波特率设置。 方便、快捷、稳定&#xff01; 二、烧录说明 固件及工具打包下载地址&#xff1a; https://download.csdn.net/download/flyai…...

内网项目,maven本地仓库离线打包,解决Cannot access central in offline mode?

背景&#xff1a; 内网项目打包&#xff0c;解决Cannot access central in offline mode? 1、修改maven配置文件&#xff1a; localRepository改为本地仓库位置 <localRepository>D:\WorkSpace\WorkSoft\maven-repository\iwhalecloud-repository\business</loca…...

stack和queue --->容器适配器

不支持迭代器&#xff0c;迭代器无法满足他们的性质 边出边判断 实现 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stack> #include<queue> using namespace std; int main() {stack<int> st;st.push(1);st.push(2);st.push(3);…...

ffmpeg视频解码

一、视频解码流程 使用ffmpeg解码视频帧主要可分为两大步骤&#xff1a;初始化解码器和解码视频帧&#xff0c;以下代码以mjpeg为例 1. 初始化解码器 初始化解码器主要有以下步骤&#xff1a; &#xff08;1&#xff09;查找解码器 // 查找MJPEG解码器pCodec avcodec_fin…...

前端入门一之CSS知识详解

前言 CSS是前端三件套之一&#xff0c;在MarkDown中也完美兼容这些语法&#xff1b;这篇文章是本人大一学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 Emmet语法&#xff1a;CSS基本语法&#xff1a;css语法结构只有3种&#xff1a…...

【JS学习】10. web API-BOM

文章目录 Web APIs - 第5天笔记js组成window对象定时器-延迟函数location对象navigator对象histroy对象本地存储&#xff08;今日重点&#xff09;localStorage&#xff08;重点&#xff09;sessionStorage&#xff08;了解&#xff09;localStorage 存储复杂数据类型 综合案例…...

C#实现递归获取所有父级的列表

条件&#xff1a; 父级的id是子级的父id形成递归条件 实现功能&#xff1a; 获取自己到最顶级父级的列表&#xff08;假如最顶级父级的父ID0&#xff09; 代码&#xff1a; 解释&#xff1a;CF_CODE是自己的ID&#xff0c;CF_PARENT_ID是父id /// <summary>/// 递归获…...

【深度学习】梯度累加和直接用大的batchsize有什么区别

梯度累加与使用较大的batchsize有类似的效果&#xff0c;但是也有区别 1.内存和计算资源要求 梯度累加&#xff1a; 通过在多个小的mini-batch上分别计算梯度并累积&#xff0c;梯度累积不需要一次加载所有数据&#xff0c;因此显著减少了内存需求。这对于显存有限的设别尤为重…...

【Linux】网络相关的命令

目录 ① ip addr show ② ip route show ③ iptables -nvL ④ ping -I enx00e04c6666c0 192.168.1.100 ⑤ ip route get 192.168.1.100 ⑥ sudo ip addr add dev enx00e04c6666c0 192.168.1.101/24 ⑦ ifconfig ⑧ netstat ⑨ traceroute ⑩ nslookup ① ip addr sho…...

leetcode哈希表(五)-四数相加II

题目 454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&…...

Java学习路线:Maven(一)认识Maven

目录 认识Maven 新建Maven文件 导入依赖 认识Maven Maven是一个Java的项目管理工具&#xff0c;通过Maven&#xff0c;我们可以实现&#xff1a; 项目自动构建&#xff0c;包括代码的编译、测试、打包、安装等依赖管理&#xff0c;快速完成依赖的导入 在学习Maven之前&…...

【深度学习】— 多输入多输出通道、多通道输入的卷积、多输出通道、1×1 卷积层、汇聚层、多通道汇聚层

【深度学习】— 多输入多输出通道、多通道输入的卷积、多输出通道、11 卷积层、汇聚层、多通道汇聚层 多输入多输出通道多通道输入的卷积示例&#xff1a;多通道的二维互相关运算 多输出通道实现多通道输出的互相关运算 11 卷积层11 卷积的作用 使用全连接层实现 11 卷积小结 …...

java mapper 的 xml讲解

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.bnc.s12.mapper.GoodaCateDT…...

全面解析:区块链技术及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;区块链技术及其应用 文章目录 全面解析&#xff1a;区块链技术及其应用什么是区块链区块链的工作原理1. 分…...

python基础学习笔记

本文类比c语言讲解python 一.变量和类型 前缀小知识&#xff1a; 注意&#xff1a;1.python写每一行代码时&#xff0c;结尾不需要 ; 这点是和c语言有很大区别的 2.代码的缩进&#xff08;就是每行代码前面的空格&#xff09;是非常重要的后文会提到 1.定义变量 注意: 和C/C …...

【dvwa靶场:XSS系列】XSS (DOM) 低-中-高级别,通关啦

一、低级low 拼接的url样式&#xff1a;​​​​​​​ http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default 拼接的新内容 <script>alert("假客套")</script> 二、中级middle 拼接的url样式&#xff1a;​​​​​​​ http://127.0.0.1/dvwa/vuln…...

ONLYOFFICE 8.2深度体验:高效协作与卓越性能的完美融合

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ONLYOFFICE 8.2 &#x1f50d;引言&#x1f4d2;1. ONLYOFFICE 产品简介&#x1f4da;2. 功能与特点&#x1f341;协作编辑 PDF&#x1f342;…...

Mac如何将多个pdf文件归并到一个

电脑&#xff1a;MacBook Pro M1 操作方式&#xff1a; very easy 选中想要归并的所有pdf文件&#xff0c;然后 右键 -> quick actions -> Create PDF 然后就可以看到将所选pdf文件归并为一个pdf的文件了...

LINUX下的Mysql:Mysql基础

目录 1.为什要有数据库 2.什么是数据库 3.LINUX下创建数据库的操作 4.LINUX创建表的操作 5.SQL语句的分类 6.Mysql的架构 1.为什要有数据库 直接用文件直接存储数据难道不行吗&#xff1f;非得搞个数据库呢&#xff1f; 首先用文件存储数据是没错&#xff0c;但是文件不方…...

矿道遮挡重度干扰,无感定位碾压UWB穿透弱、断链频繁痛点

矿道遮挡重度干扰&#xff0c;无感定位碾压UWB穿透弱、断链频繁痛点矿山井下矿道蜿蜒曲折、岩壁岩体层层阻隔&#xff0c;支护钢架、采掘设备密集排布&#xff0c;叠加粉尘雾气、巷道拐角、纵深盲区等复杂条件&#xff0c;形成重度遮挡强干扰作业环境。数字孪生与视频孪生技术深…...

Java SE与Spring Boot在智慧城市中的应用

Java SE与Spring Boot在智慧城市中的应用 在互联网大厂求职的面试中&#xff0c;技术栈与场景应用是考察重点。今天&#xff0c;我们将通过一位搞笑程序员燕双非的面试经历来了解Java SE与Spring Boot在智慧城市中的应用。 第一轮面试 场景&#xff1a;智慧城市的背景 面试官&a…...

企业级SECS/GEM协议实现:secsgem库的深度解析与实战指南

企业级SECS/GEM协议实现&#xff1a;secsgem库的深度解析与实战指南 【免费下载链接】secsgem Simple Python SECS/GEM implementation 项目地址: https://gitcode.com/gh_mirrors/se/secsgem 在半导体制造和工业自动化领域&#xff0c;设备通信的标准化和可靠性至关重要…...

为什么82%的保险AI Agent项目卡在POC阶段?一线技术总监首度公开6个致命设计盲区

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;为什么82%的保险AI Agent项目卡在POC阶段&#xff1f; 保险行业正加速拥抱AI Agent技术&#xff0c;但据2024年《亚太保险科技落地白皮书》统计&#xff0c;82%的AI Agent项目在概念验证&#xff08;POC&…...

5分钟掌握Windows字体清晰度优化:Better ClearType Tuner终极指南

5分钟掌握Windows字体清晰度优化&#xff1a;Better ClearType Tuner终极指南 【免费下载链接】BetterClearTypeTuner A better way to configure ClearType font smoothing on Windows 10. 项目地址: https://gitcode.com/gh_mirrors/be/BetterClearTypeTuner 还在为Wi…...

为Claude Code配置Taotoken稳定通道避免封号与Token不足

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为Claude Code配置Taotoken稳定通道避免封号与Token不足 对于频繁使用Claude Code作为编程助手的开发者而言&#xff0c;直接使用官…...

ASP.NET Core 分层设计实践拒绝胖Controller

Controller 是 API 的入口,理论上应该只做三件事:接收请求、调用下层、返回响应。但在实际项目中,不少开发者会把用户校验、金额判断、业务限制条件直接写进 Controller Action,久而久之就成了所谓的"胖 Controller"。 这不只是代码整洁的问题。业务规则一旦耦合…...

安卓HTTPS抓包证书信任问题深度解析与系统级迁移方案

1. 为什么安卓抓包总在“证书信任”这关卡住&#xff1f;——一个被低估的系统级权限问题你是不是也经历过&#xff1a;Fiddler、Charles 或 mitmproxy 在电脑上配置得严丝合缝&#xff0c;手机 Wi-Fi 代理一设就通&#xff0c;HTTP 流量哗哗跑&#xff0c;可一到 HTTPS&#x…...

2026脑机接口:技术突破与产业爆发

2026年脑机接口技术的发展现况 2026年&#xff0c;脑机接口技术已从实验室前沿研究加速迈向产业化与规模化应用的关键节点&#xff0c;其发展现况呈现出“技术突破、场景深化、生态初成”的鲜明特征。 一、 技术路线&#xff1a;侵入式与非侵入式并行突破&#xff0c;性能边界…...

WhatsNew vs 其他更新提示库:为什么它是iOS开发者的首选

WhatsNew vs 其他更新提示库&#xff1a;为什么它是iOS开发者的首选 【免费下载链接】WhatsNew Showcase new features after an app update similar to Pages, Numbers and Keynote. 项目地址: https://gitcode.com/gh_mirrors/wh/WhatsNew 在iOS应用开发中&#xff0c…...