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

第一天复习Qt文件读取

Qt文件操作:

1、QFile QTextStream操作文件案例:
1、打开文件
QFile file(absolute filepath | relative path);
file.readLine()返回内容长度,如果为-1就是读取失败
file. Close()读取后关闭
file.errorString()返回文件打开发生的错误
2、文件写入//文件写入double dPi = 3.1415926;int age = 13;QFile dataFile;dataFile.setFileName(R"(P:\Qt_study_rebegin\Qt_basic\01_basic_lesson\project01\src\build-qiniu_016-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\debug\data.txt)");// 检查文件是否存在if (!dataFile.exists()) {// 文件不存在,创建文件if (dataFile.open(QIODevice::WriteOnly)) {qDebug() << "File created successfully.";// 创建一个QTextStream对象out,并将其关联到dataFile文件上QTextStream out(&dataFile);// 设置实数(浮点数)的输出精度为3位小数out.setRealNumberPrecision(3);// 设置字段宽度为10个字符,写入的数据将按照10个字符的宽度进行排列out.setFieldWidth(10);// 设置字段对齐方式为右对齐,写入的数据将在字段宽度内右对齐显示,左侧留有空格填充out.setFieldAlignment(QTextStream::AlignRight);out<<QString("PI: ")<<scientific<<left<<dPi<<hex<<Qt::showbase<<uppercasebase<<age;dataFile.close();} else {qDebug() << "Failed to create file.";}} else {qDebug() << "File already exists.";}
3、文件存储并输出QFile binfile("info.txt");if(binfile.open(QIODevice::WriteOnly|QIODevice::Truncate)){// 创建一个数据流对象,并将其关联到文件上QDataStream out(&binfile);// 写入数据到数据流中out << QString("易烊千玺")  // 字符串数据<< QDate::fromString("2000-11-28","yyyy-MM-dd")  // 日期数据<< (qint32)19;  // 整数数据// 关闭文件binfile.close();}else{// 输出错误信息qDebug() << binfile.errorString();}// 设置文件名为 info.txtbinfile.setFileName("info.txt");// 以只读方式打开文件if(binfile.open(QIODevice::ReadOnly)){// 创建一个数据流对象,并将其关联到文件上QDataStream in(&binfile);// 定义变量用于存储读取的数据QString name;QDate birthday;qint32 age;// 从数据流中读取数据in >> name >> birthday >> age;// 关闭文件binfile.close();// 输出读取的数据qDebug() << "Name:" << name;qDebug() << "Birthday:" << birthday.toString("yyyy-MM-dd");qDebug() << "Age:" << age;}else{// 输出错误信息qDebug() << binfile.errorString();}

s输出结果

2、QFileInfo类获取文件信息
// 计算目录大小的递归函数
qint64 Widget::calculateDirSize(const QString &dirPath) {qint64 totalSize = 0;// 创建 QDir 对象并设置过滤器QDir dir(dirPath);dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);// 获取目录下的文件和子目录信息列表QFileInfoList fileInfoList = dir.entryInfoList();// 遍历文件和子目录信息列表for (const QFileInfo &info : fileInfoList) {// 如果是文件,则累加文件大小if (info.isFile()) {totalSize += info.size();}// 如果是子目录,则递归调用计算目录大小函数,并累加子目录大小else if (info.isDir()) {totalSize += calculateDirSize(info.filePath());}}return totalSize;
}// 获取文件信息并显示在界面上的函数
void Widget::getFileInfo(QString &filename) {// 创建 QFileInfo 对象获取文件/目录信息QFileInfo info(filename);// 根据文件类型获取大小,如果是目录则调用计算目录大小函数qint64 size = info.isDir() ? calculateDirSize(filename) : info.size();QDateTime createtime = info.created();QDateTime lasttime = info.lastModified();QDateTime lastrtime = info.lastRead(); // 最后一次访问// 获取文件属性信息bool isdir = info.isDir();bool isfile = info.isFile();bool islink = info.isSymLink();bool ishidden = info.isHidden();bool isread = info.isReadable();bool iswrite = info.isWritable();bool isexcute = info.isExecutable();// 将文件信息显示在界面上ui->size->setText(QString::number(size));ui->create->setText(createtime.toString());ui->dir->setChecked(isdir); // 设置目录选中状态
}// 浏览按钮点击事件的处理函数
void Widget::on_browsebtn_clicked() {// 弹出文件选择对话框选择目录QString path = QFileDialog::getExistingDirectory(this, "选择目录", ",");ui->name->setText(path); // 在界面上显示选择的目录路径getFileInfo(path); // 获取目录信息并显示在界面上
}

效果展示:
在这里插入图片描述

相关文章:

第一天复习Qt文件读取

Qt文件操作&#xff1a; 1、QFile QTextStream操作文件案例&#xff1a; 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度&#xff0c;如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…...

使用非官网购买Chatgpt的api调用

测试代码 from openai import OpenAI client OpenAI(api_key用户密钥) import json import os import timeclass ChatGPT:def __init__(self, user):self.user userself.messages [{"role": "system", "content": "Agent"}]def as…...

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset&#xff0c;hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys&#xff0c;hvals 使用命令 hmget&#xff0c;hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务…...

Unity 性能优化之遮挡剔除(Occlusion Culling)(六)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、遮挡剔除是什么&#xff1f;二、静态遮挡剔除的使用步骤1.标记为遮挡剔除对象2.创建Occlusion Area组件3.烘焙4.Occlusion窗口Bake的参数Smallest Oc…...

android——关于app性能优化篇

前言 应用性能优化是指通过各种技术手段和优化策略&#xff0c;提高应用程序的性能&#xff0c;使其能够更高效地运行和响应用户操作。 下面介绍一些常见的应用性能优化方法 一、布局优化 1、减少嵌套 嵌套层数尽量少&#xff0c;使用ConstaintLayout能使层级大大降低尽量使…...

单链表经典算法LeetCode--203.移除链表元素(两种方法解)

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 分析此题提供两种思路&#xff1a; 1.遍历原链表&#xff0c;将值为val的节点释放掉&#xff08;双指针法&#xff09; 定义一个pcur指针指向头节点&#xff0c;定义一个prev指针指向NULL 需要注…...

MySQL—子查询

目录 ▐ 子查询概述 ▐ 准备工作 ▐ 标量子查询 ▐ 列子查询 ▐ 表子查询 ▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询&#xff0c;即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询&#xff0c;结…...

ffmpeg 读取流报错: Non-monotonous DTS in output stream

在处理媒体文件时&#xff0c;我们可能会遇到各种错误&#xff0c;其中之一就是“Non-monotonous DTS in output stream 0:1; previous: 36963866, current: 36611997; changing to 36963867. This may result in incorrect timestamps in the output file.”这个错误通常发生在…...

yo!这里是socket网络编程相关介绍

目录 前言 基本概念 源ip&&目的ip 源端口号&&目的端口号 udp&&tcp初识 socket编程 网络字节序 socket常见接口 socket bind listen accept connect 地址转换函数 字符串转in_addr in_addr转字符串 套接字读写函数 recvfrom&&a…...

polars学习-03 数据类型转换

背景 polars学习系列文章&#xff0c;第3篇 数据类型转换。 该系列文章会分享到github&#xff0c;大家可以去下载jupyter文件 仓库地址&#xff1a;https://github.com/DataShare-duo/polars_learn 小编运行环境 import sysprint(python 版本&#xff1a;,sys.version.spli…...

IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例

近日&#xff0c;国际知名数据咨询机构 IDC 重磅发布了《IDC PeerScape&#xff1a;金融领域中数据管理分析服务最佳实践案例》报告&#xff0c;Aloudata 与招商银行联合打造的 DDH 数据研发运维一体化平台成功入选&#xff0c;Aloudata 的技术、产品实力&#xff0c;以及在金融…...

RSA与AES算法比较及应用场景推荐

摘要&#xff1a;在现代加密通信中&#xff0c;RSA算法和AES算法被广泛应用。RSA算法是一种非对称加密算法&#xff0c;而AES算法是一种对称加密算法。本文将对比分析这两种算法的原理、性能及适用场景&#xff0c;并给出相应的推荐建议。 一、RSA算法简介 RSA算法&#xff0…...

揭秘 HTTP 代理:增强在线活动的安全性和匿名性

HTTP 代理在保护您的在线隐私、增强安全性以及允许访问受限内容方面发挥着关键作用。了解 HTTP 代理的工作原理以及如何有效地利用它们可以让您掌控自己的在线状态和浏览体验。让我们深入研究 HTTP 代理的世界&#xff0c;探索它们的优势、应用程序以及最大化其效用的最佳实践。…...

【经验】mysql冷热数据分离

使用mysql存储时&#xff0c;为了提升数据的查询效率&#xff0c;降低磁盘存储压力等&#xff0c;我们常常使用"冷热数据分离"分离的方案。即&#xff0c;将数据从所谓的“热表”&#xff08;即经常有写入和查询操作的活跃表&#xff09;迁移到“冷表”&#xff08;用…...

【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…...

蓝桥杯国赛每日一题:日志统计(双指针)

题目描述&#xff1a; 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志&#xff0c;日志共有 N行。 其中每一行的格式是&#xff1a; ts id 表示在 ts时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长…...

佛山MES公司(盈致mes系统服务商)助力企业实现智能制造

佛山是中国制造业著名的城市之一&#xff0c;拥有众多制造企业。随着科技的不断发展和智能制造的兴起&#xff0c;越来越多的企业开始意识到数字化生产管理的重要性&#xff0c;MES制造执行系统作为智能制造的关键技术之一&#xff0c;受到了越来越多企业的关注和应用。 在佛山…...

算法设计课第五周(贪心法实现活动选择问题)

目录 一、【实验目的】 二、【实验内容】 三、实验源代码 一、【实验目的】 &#xff08;1&#xff09;熟悉贪心法的设计思想 &#xff08;2&#xff09;理解贪心法的最优解与正确性证明之间的关系 &#xff08;3&#xff09;比较活动选择的各种“贪心”策略&#xff0c;…...

Ubuntu20.04右键打不开终端

今天用virtualbox安装了ubuntu20.04 问题&#xff1a;右键打开终端&#xff0c;怎么也打开不了&#xff01; 点了也没反应&#xff0c;或者鼠标转小圈圈&#xff0c;然后也没有反应… 解决方法&#xff1a; 1、Ctrl Alt F6 先切换到终端访问界面 mac电脑 Ctrl Alt F6 …...

XML元素

XML 元素是XML文档中的基本组成单位&#xff0c;它由开始标签、结束标签和内容组成&#xff0c;格式如下&#xff1a; <element>content</element>常见的XML元素包括&#xff1a; 根元素&#xff08;Root Element&#xff09;&#xff1a;XML文档中的最外层元素&…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...