第一天复习Qt文件读取

news2025/1/14 0:46:14

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.txt
    binfile.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); // 获取目录信息并显示在界面上
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1654052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据仓库实验三:分类规则挖掘实验

目录 一、实验目的二、实验内容和要求三、实验步骤1、创建数据库和表2、决策树分类规则挖掘&#xff08;1&#xff09;新建一个 Analysis Services 项目 jueceshu&#xff08;2&#xff09;建立数据源视图&#xff08;3&#xff09;建立挖掘结构 DST.dmm&#xff08;4&#xff…

16.接口自动化学习-编码处理与装饰器

1.编码和解码 编码&#xff1a;将自然语言翻译成计算机可以识别的语言 hello–01010 解码&#xff1a;将机器识别的语言翻译成自然语言 2.编码格式 UTF-8 GBK unicode 3.编码操作 #编码操作str1"hello呀哈哈哈"str2str1.encode(gbk)print(str2)print(type(str2))…

FPGA ov5640视频以太网传输

1 实验任务 使用DFZU4EV MPSoC 开发板及双目OV5640摄像头其中一个摄像头实现图像采集&#xff0c;并通过开发板上的以太网接口发送给上位机实时显示。 2 Verilog代码 2.1 顶层模块 timescale 1ns / 1ps //以太网传输视频顶层模块module ov5640_udp_pc (input sys_cl…

在WPS表格(Excel)中,每10行增加一个特定的值

注&#xff1a;如下为WPS表格操作演示 例如1&#xff0d;15的数值是1&#xff0c;16-30就变为2&#xff0c;31-45就变为3&#xff0c;类推&#xff01; 1、在B1单元格输入一个起始值&#xff0c;B2单元格输入公式IF(MOD(ROW(),15)0,B11,B1) 然后鼠标放到B2单元格右下角小点处&…

开机弹窗找不到OpenCL.dll是怎么回事,哪种修复方法更推荐

当用户在操作电脑过程中遇到系统提示“OpenCL.dll丢失”时&#xff0c;这究竟是怎么一回事呢&#xff1f;OpenCL.dll&#xff0c;作为Open Computing Language&#xff08;开放计算语言&#xff09;的重要动态链接库文件&#xff0c;它在图形处理器&#xff08;GPU&#xff09;…

springboot整合rabbitmq的不同工作模式详解

前提是已经安装并启动了rabbitmq&#xff0c;并且项目已经引入rabbitmq&#xff0c;完成了配置。 不同模式所需参数不同&#xff0c;生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…

县供电公司员工向媒体投稿发文章用亲身经历告诉你并不难

在县供电公司的日子里,我肩负着一项至关重要的使命——信息宣传工作。这不仅仅是一份职责,更是连接公司与外界的桥梁,通过新闻稿件传递我们的声音,展示我们的成果。然而,回忆起刚刚踏入这个领域的时光,那段经历至今让我感慨万千。 初涉投稿,步履维艰 刚接手这项工作时,我的投稿…

信息化飞速发展下,源代码防泄密方案该如何选择?常见四种有效方案分享

信息化时代发展迅速&#xff0c;数据防泄露一词也频繁的出现在我们身边。无论企业或政府单位&#xff0c;无纸化办公场景越来越多&#xff0c;数据泄露的时间也层出不穷。例如&#xff1a;世界最大职业中介网站Monster遭到黑客大规模攻击&#xff0c;黑客窃取在网站注册的数百万…

Dockerfile实践java项目

目的&#xff1a;用java项目测试dockerfil部署&#xff08;前提是安装好了docker&#xff09; 部署准备文件如下 1. java项目 java项目demo地址 https://gitee.com/xiaoqu_12/dockerfileDemo.git 或者百度网盘直接下载打包好的jar包 链接&#xff1a;https://pan.baidu.com/s/…

PostgreSQL的学习心得和知识总结(一百四十一)|深入理解PostgreSQL数据库数据库角色的使用及预定义角色的原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

【计算机毕业设计】基于SSM++jsp的电子竞技管理平台【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 目的和意义 1.3 论文结构安排 2 相关技术 2.1 SSM框架介绍 2.2 B/S结构介绍 2.3 Mysql数据库介绍 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 运行可行性分析 3.2 系统性能分析 3.2.1 易用性指标 3.2.2 可…

您的浏览器不支持 undefined 代理认证!如有问题请联系您的浏览器支持,请勿反馈此问题给 SwitchyOmega.

一、【问题描述】 PAC 文件是一个 JavaScript 文件&#xff0c;用于定义客户端的代理规则。您可以在 PAC 文件中编写规则&#xff0c;根据不同的目标网址或其他条件&#xff0c;决定是否通过代理服务器进行访问。您可以将 PAC 文件部署到服务器上&#xff0c;并在客户端配置浏…

QT学习PCL库代码

找关键点keypoints 绿色的点就是keypoints outofcore

应用软件安全保证措施方案书

系统安全保证措施方案—word原件 软件全套资料进主页获取或者本文末个人名片直接获取。

【Docker学习】docker run的端口映射-p和-P选项

docker run的端口映射选项分为-p&#xff08;小写&#xff0c;全称--publish&#xff09;&#xff0c;-P&#xff08;大写&#xff0c;全称--publish-all&#xff09;&#xff0c;之前认为只有改变容器发布给宿主机的默认端口号才会进行-p的设置&#xff0c;而不改变默认端口号…

STC8增强型单片机开发 【第一个程序 - 点亮第一盏灯】

目录 一、创建项目 1. 创建一个新的项目 ​编辑 2. 配置开发板信息 ​编辑 3. 取消汇编配置 4. 项目结构 二、编码实现 1. 项目准备 2. 代码实现 点灯&#xff1a; 熄灯&#xff1a; 3. 编译烧录运行 配置编译输出 保存和编译代码 ​编辑 烧录 一、创建项目 1. …

静态照片怎么合成gif?详细介绍一个方法

我们在各大平台中都能看到各种样式的gif动图。Gif动图其实就是由一帧一帧的静态图片合成的动态效果的gif&#xff0c;想要制作gif动画可以通过使用在线图片合成&#xff08;https://www.gif5.net/&#xff09;工具-GIF5工具网&#xff0c;手机、pc均可操作&#xff0c;只需要上…

STC8增强型单片机开发——C51版本Keil环境搭建

一、目标 了解C51版本Keil开发环境的概念和用途掌握C51版本Keil环境的安装和配置方法熟悉C51版本Keil开发环境的使用 二、准备工作 Windows 操作系统Keil C51 安装包&#xff08;可以从Keil官网下载&#xff09;一款8051单片机开发板 三、搭建流程 环境搭建的基本流程&#xf…

第八届大数据与物联网国际会议(BDIOT 2024)即将召开!

第八届大数据与物联网国际会议(BDIOT 2024)将于2024年9月14-16日在澳门圣若瑟大学举行。数聚未来&#xff0c;物联世界&#xff01;BDIOT 2024旨在搭建为各位与会代表展示自己研究成果、分享经验、建立联系和开展合作的平台&#xff0c;共同探讨大数据与物联网领域的未来发展方…

【CSS】认识CSS选择器及各选择器对应的用法

目录 一、什么是CSS&#xff1f; 二、CSS 选择器 1. 标签选择器 2. 类选择器 3. ID选择器 4. 通配符选择器 5. 复合选择器 一、什么是CSS&#xff1f; CSS(Cascading Style Sheet)&#xff0c;层叠样式表。它与 HTML&#xff08;超文本标记语言&#xff09;一起使用&am…