第一天复习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();}

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文件操作: 1、QFile QTextStream操作文件案例: 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度,如果为-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,hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys,hvals 使用命令 hmget,hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis,首先要连接上 redis 服务…...
Unity 性能优化之遮挡剔除(Occlusion Culling)(六)
提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、遮挡剔除是什么?二、静态遮挡剔除的使用步骤1.标记为遮挡剔除对象2.创建Occlusion Area组件3.烘焙4.Occlusion窗口Bake的参数Smallest Oc…...
android——关于app性能优化篇
前言 应用性能优化是指通过各种技术手段和优化策略,提高应用程序的性能,使其能够更高效地运行和响应用户操作。 下面介绍一些常见的应用性能优化方法 一、布局优化 1、减少嵌套 嵌套层数尽量少,使用ConstaintLayout能使层级大大降低尽量使…...
单链表经典算法LeetCode--203.移除链表元素(两种方法解)
1.链接:. - 力扣(LeetCode)【点击即可跳转】 分析此题提供两种思路: 1.遍历原链表,将值为val的节点释放掉(双指针法) 定义一个pcur指针指向头节点,定义一个prev指针指向NULL 需要注…...
MySQL—子查询
目录 ▐ 子查询概述 ▐ 准备工作 ▐ 标量子查询 ▐ 列子查询 ▐ 表子查询 ▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询,即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询,结…...
ffmpeg 读取流报错: Non-monotonous DTS in output stream
在处理媒体文件时,我们可能会遇到各种错误,其中之一就是“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学习系列文章,第3篇 数据类型转换。 该系列文章会分享到github,大家可以去下载jupyter文件 仓库地址:https://github.com/DataShare-duo/polars_learn 小编运行环境 import sysprint(python 版本:,sys.version.spli…...
IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例
近日,国际知名数据咨询机构 IDC 重磅发布了《IDC PeerScape:金融领域中数据管理分析服务最佳实践案例》报告,Aloudata 与招商银行联合打造的 DDH 数据研发运维一体化平台成功入选,Aloudata 的技术、产品实力,以及在金融…...
RSA与AES算法比较及应用场景推荐
摘要:在现代加密通信中,RSA算法和AES算法被广泛应用。RSA算法是一种非对称加密算法,而AES算法是一种对称加密算法。本文将对比分析这两种算法的原理、性能及适用场景,并给出相应的推荐建议。 一、RSA算法简介 RSA算法࿰…...
揭秘 HTTP 代理:增强在线活动的安全性和匿名性
HTTP 代理在保护您的在线隐私、增强安全性以及允许访问受限内容方面发挥着关键作用。了解 HTTP 代理的工作原理以及如何有效地利用它们可以让您掌控自己的在线状态和浏览体验。让我们深入研究 HTTP 代理的世界,探索它们的优势、应用程序以及最大化其效用的最佳实践。…...
【经验】mysql冷热数据分离
使用mysql存储时,为了提升数据的查询效率,降低磁盘存储压力等,我们常常使用"冷热数据分离"分离的方案。即,将数据从所谓的“热表”(即经常有写入和查询操作的活跃表)迁移到“冷表”(用…...
【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析
🎩 欢迎来到技术探索的奇幻世界👨💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…...
蓝桥杯国赛每日一题:日志统计(双指针)
题目描述: 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 N行。 其中每一行的格式是: ts id 表示在 ts时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长…...
佛山MES公司(盈致mes系统服务商)助力企业实现智能制造
佛山是中国制造业著名的城市之一,拥有众多制造企业。随着科技的不断发展和智能制造的兴起,越来越多的企业开始意识到数字化生产管理的重要性,MES制造执行系统作为智能制造的关键技术之一,受到了越来越多企业的关注和应用。 在佛山…...
算法设计课第五周(贪心法实现活动选择问题)
目录 一、【实验目的】 二、【实验内容】 三、实验源代码 一、【实验目的】 (1)熟悉贪心法的设计思想 (2)理解贪心法的最优解与正确性证明之间的关系 (3)比较活动选择的各种“贪心”策略,…...
Ubuntu20.04右键打不开终端
今天用virtualbox安装了ubuntu20.04 问题:右键打开终端,怎么也打开不了! 点了也没反应,或者鼠标转小圈圈,然后也没有反应… 解决方法: 1、Ctrl Alt F6 先切换到终端访问界面 mac电脑 Ctrl Alt F6 …...
XML元素
XML 元素是XML文档中的基本组成单位,它由开始标签、结束标签和内容组成,格式如下: <element>content</element>常见的XML元素包括: 根元素(Root Element):XML文档中的最外层元素&…...
XUnity Auto Translator:3分钟为Unity游戏添加多语言支持的终极方案
XUnity Auto Translator:3分钟为Unity游戏添加多语言支持的终极方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而无法畅玩心爱的Unity游戏?或者作为游…...
3大核心功能深度解析:茉莉花插件如何彻底解决中文文献管理难题
3大核心功能深度解析:茉莉花插件如何彻底解决中文文献管理难题 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 您是否…...
游戏存档管理终极指南:告别背包焦虑的5大解决方案
游戏存档管理终极指南:告别背包焦虑的5大解决方案 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 还在为游戏中的装备堆积如山而烦恼吗?每次冒险归来…...
数字图像处理入门:像素、通道与卷积操作的核心原理与实践
1. 项目概述:为什么“基本知识”是数字图像处理的基石刚入行做图像处理那会儿,我犯过一个典型的“新手错误”:拿到一张图,二话不说就开始调OpenCV的函数,什么高斯模糊、边缘检测、二值化,一顿操作猛如虎&am…...
AI——Dify高级RAG优化
高级RAG优化简介一、基础RAG的核心痛点二、全流程高级优化技术(一)索引构建阶段:高质量数据底座(二)检索阶段:精准召回与重排(三)检索后阶段:上下文压缩与提纯࿰…...
第20章:Skill ≠ Prompt——从提示词到可复用技能的范式升级
第20章:Skill ≠ Prompt——从提示词到可复用技能的范式升级 20.1 问题定义:为什么"保存Prompt"不够 很多团队的做法是:把常用的Prompt保存在文档或笔记中,需要时复制粘贴。这看起来合理,但存在三个根本问题: 不可版本化:Prompt是散落的文本片段,没有版本号…...
Flink窗口实战避坑指南:从AggregateFunction到ProcessWindowFunction,我踩过的那些坑
Flink窗口实战避坑指南:从AggregateFunction到ProcessWindowFunction的深度解析 第一次在真实项目中使用Flink窗口时,我像发现新大陆一样兴奋。直到凌晨三点被报警短信惊醒,才发现窗口计算的结果完全偏离预期——这让我意识到,窗口…...
Applite:告别命令行!macOS软件管理的图形化终极解决方案
Applite:告别命令行!macOS软件管理的图形化终极解决方案 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为Homebrew复杂的命令行操作而头疼吗&…...
基于RP2040与CircuitPython的键盘内嵌DOOM游戏启动器DIY指南
1. 项目概述与核心思路几年前,我还在用笨重的全尺寸键盘时,就总琢磨着怎么给这每天摸上八小时的家伙加点“私货”。直到后来玩起了RP2040和CircuitPython,一个念头就冒出来了:能不能把游戏直接“焊”进键盘里?不是那种…...
LLVM开发实战指南:从入门到精通编译器与程序分析
1. 项目概述:为什么你需要一份LLVM指南?如果你是一名C开发者,或者对编译器、程序分析、代码优化这些底层技术感兴趣,那么“LLVM”这个名字对你来说一定不陌生。它早已不是象牙塔里的学术玩具,而是驱动着从iOS、macOS到…...
