QFile(文件)

news2024/11/27 6:22:12

QFile

QFile提供一个用于读/写的接口,是一个可以用来读/写二进制文件的Qt资源的I/O设备,QFile可以单独使用,一般配合QTextStream或QDataStream 

输入文件路径时最好使用"/"作为分隔符

构造函数:

 常用的函数:因为继承自QIODevice函数大多来自QIODevice

open()打开
close()关闭文件
flush()刷新
setFileName()设置打开的文件
exist()判断文件是否存在
remove()删除该文件
size()文件大小
atend()是否在文件末尾
pos()获取位置
seek()调整位置
resize()调整文件大小
moveToTrash ()垃圾箱

读取文件操作:

  • read
  • readLine
  • readAll
  • getChar(char *c)  读取一个字符到c

写入文件操作:

  •  write
  • putChar
  • ungetChar  撤销  getChar的操作

打开一个文件读取一行内容:

文件内容为:

    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        qDebug()<<file.readLine();//读取一行
    }
    file.close();//关闭文件

 

注意读取结果出现\r\n

解决方法:需要在打开方式中添加 QIODevice::Text 

  • 将 Windows 样式的行终止符 (“\r\n”) 转换为 C++ 样式的行终止符 (“\n”)
    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        qDebug()<<file.readLine();//读取一行
    }
    file.close();//关闭文件

 

 读取全部内容:

把qDebug()<<file.readLine();//读取一行 改为

qDebug()<<file.readAll();//读取全部

 也可以使用循环一行一行读取全部内容:

    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
       while(!file.atEnd())//判断是否为文件末尾
       {
           qDebug()<<file.readLine();
       }
    }
    file.close();//关闭文件

获取一个字符 

获取一个字符后,读取位置会往后挪一位。

    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        qDebug()<<file.pos();//初始位置为0
        char c;
        qDebug()<<file.getChar(&c);
        qDebug()<<c;//输出该字符
        qDebug()<<file.pos();//输出目前的位置
    }
    file.close();//关闭文件

 

 使用seek()调整读取位置

    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::ReadOnly|QIODevice::Text);//设置自读打开方式
    if(file.isOpen())//如果打开成功
    {
        char c;
        qDebug()<<file.getChar(&c);//获取一个字符,读取成功返回true
        qDebug()<<c;//输出该字符
        qDebug()<<file.pos();//输出目前的位置
        file.seek(20);//调整到第20个位置
        file.getChar(&c);//读取一个字符
        qDebug()<<c;//输出该字符
        qDebug()<<file.pos();//输出目前的位置
        
    }
    file.close();//关闭文件

 

 写入内容到文件:

  • QIODevice::Append  将所有数据写入文件末尾
  • QIODevice::WriteOnly  写入模式(单独使用相当于截断)除非与 ReadOnly、Append 或 NewOnly 结合使用

写入到文件末尾:

    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::WriteOnly|QIODevice::Append);//设置写入并追加
    if(file.isOpen())//如果打开成功
    {
        file.write("\n6666666");//将数据写入
    }
    file.close();//关闭文件

 

 写入到任何位置:

 通过seek()设置写入位置

    QFile file("D:/Qt_text/456.txt");
    file.open(QIODevice::WriteOnly|QIODevice::ReadOnly|QIODevice::Text);//
    if(file.isOpen())//如果打开成功
    {
        file.write("\n6666666");//将数据写入到开头
        file.seek(20);//设置位置
        file.write("\n6666666");//将数据写入20的位置
    }
    file.close();//关闭文件

 

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

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

相关文章

前端甘特图组件开发(二)

自定义时间轴功能 由于常见的甘特图时间轴只支持按照天/周/月/年或者固定的时间单位进行划分&#xff0c;但实际使用场景下有时候会需要按照特定且不规则的时间段对进度数据进行直观划分。因此本组件在原时间轴的基础上添加新的自定义时间轴&#xff0c;可通过数据配置自定义时…

Spring Bean的作用域

1.写在前面 前面的博客我们已经介绍完Spring的依赖的查找来源&#xff0c;依赖注入的来源等等相关知识&#xff0c;今天我们继续来介绍Spring的Bean的作用域。 2.Spring Bean作用域 作用域 3.“singleton” Bean作用域 配置 4.“prototype” Bean作用域 配置 注意事项 Sp…

[Redis]-持久化方式

[Redis]-持久化方式 森格 | 2022年11月 本文是在学习Redis中&#xff0c;对Redis持久化的个人总结。 一、 持久化与Redis 1.1 什么是持久化 持久化是一种将程序数据在瞬时状态和持久状态间的转换机制&#xff0c;也就是把数据保存到可永久保存的存储设备中去。 1.2 Redis的持…

【Hack The Box】linux练习-- Writer

HTB 学习笔记 【Hack The Box】linux练习-- Writer &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1f3…

《web课程设计》使用HTML+CSS制作大学生校园二手交易网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

阿里P8现身说法,解密“架构”原理与实战笔记:从分布式到微服务

分布式架构与微服务平台是当今IT界的关键技术&#xff0c;也是资深软件工程师和系统架构师必须掌握的核心技术。 微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术&#xff0c;它们并不是凭空出现的&#xff0c;一定继承了某些“前辈”的优点。我们不仅要了解…

十万部冷知识:足球踢进了观众席,观众能把球拿走吗?

在看足球比赛的时候&#xff0c;我们经常会看到球员一脚射门踢偏了&#xff0c;球被打飞的情况&#xff0c;这时候球可就奔着观众席去了。就是因为考虑到有这种情况的发生&#xff0c;在比赛之前&#xff0c;比赛组织者&#xff0c;都会提前准备很多的备用球&#xff0c;当球被…

R11.8-11.8-11.8-11.8-BABSL

R11.8-11.8-11.8-11.8-BABSL R11.8-11.8-11.8-11.8-BABSL哈威柱塞泵宁波秉圣&#xff0c;主要特点是高自吸转速&#xff0c;工作效率高&#xff0c;结构紧凑&#xff0c;工作压力高等。广泛用于压力机器具&#xff0c;测试和实验室设施&#xff0c;润滑装置等设备&#xff0c;在…

Home Assistant添加ESPHome设备(IO控制继电器)

文章目录1.在加载项商店中安装ESPHome2.添加设备2.1 编译并下载.bin到电脑2.2 下载固件到ESP82662.3 在Home Assistant添加并配置设备2.4 在设备与服务中配置3.再添加一个设备1.在加载项商店中安装ESPHome 点击配置-加载项 点击加载项商店 搜索ESPHome 2.添加设备 这里…

为什么我在公司里访问不了家里的电脑?

本文为掘金社区首发签约文章&#xff0c;14天内禁止转载&#xff0c;14天后未获授权禁止转载&#xff0c;侵权必究&#xff01; 上篇文章「为什么我们家里的IP都是192.168开头的&#xff1f;」提到&#xff0c;因为IPv4地址有限&#xff0c;最大42亿个。为了更好的利用这有限的…

前端学习一、准备工作

一、电脑 首先想学习前端肯定是需要一台电脑&#xff0c;配置方面目前市面上3千左右的电脑就差不多了&#xff0c;如果有能力的话肯定是越高越好&#xff0c;如何挑选笔记本可自行搜索&#xff0c;我在这方面不专业就不讲了。 二、安装软件 谷歌浏览器 如果无法访问谷歌浏览…

你知道MySQL是如何解决幻读的吗?

前言 SQL标准中定义了4种隔离级别&#xff0c;分别是读未提交、读已提交、可重复读以及序列化。不同的隔离级别下&#xff0c;可以解决不同的并发问题&#xff0c;如下图所示。当然MySQL也基本遵循了这个标准&#xff0c;但是在实现上稍有不同。 本文重点探讨下MySQL是如何解…

MySQL线程池

概述 池化技术&#xff0c;包括线程池、连接池、内存池、对象池等。作用就是提前保存大量的资源&#xff0c;或将用过的资源保存起来&#xff0c;等下一次需要使用该资源时再取出来重复使用。 线程池&#xff1a;通过预先创建一定数量的线程&#xff0c;当有请求达到时&#…

黑苹果之技嘉(GIGABYTE)主板BIOS设置篇

很多童鞋安装黑苹果的时候会卡住&#xff0c;大部分原因是cfg lock 没有关闭&#xff0c;以及USB端口或SATA模式设置错误。 为了避免这些安装阶段报错的情况发生&#xff0c;今天给大家分享一下超详细的BIOS防踩坑设置指南--技嘉&#xff08;GIGABYTE&#xff09;主板BIOS篇&am…

OpenGL官方文档中的入门教程源代码:在3维空间中自由移动

OpenGL官方文档中的入门教程源代码&#xff1a;在3维空间中自由移动项目总览&#xff1a;一、开发前的准备工作1.将以上链接中的三个文件分别放到自己硬盘的一个文件夹中&#xff1a;例如D盘/OpenGL/...2.打开VS2022创建一个项目&#xff0c;右击窗体选择属性3.配置这3个文件的…

SQL Server全套教程(基于SQL语句----预览版)

SQL Server全套教程全程干货1. 数据库的基础操作1.1.0 创建数据库1.1.1 查看及修改数据库1.1.3 分离、附加和删除数据库1.1.4 数据库的备份和还原2.数据库表的相关操作2.1.0 常用数据类型2.1.1 表结构的创建2.1.2 表结构的查看及修改2.1.3 表约束的创建2.1.4 表约束的修改2.1.5…

2013款别克凯越危险警告灯不亮故障诊断方案设计

目 录 一、预约与准备工作 1 &#xff08;一&#xff09;工作描述 1 &#xff08;二&#xff09;预约 1 &#xff08;三&#xff09;准备工作 1 1、分析故障可能原因 1 2、工具、量具准备 1 3、辅料准备 2 二、接车、问诊与制单 2 &#xff08;一&#xff09;接车、问诊 2 &am…

mysql笔记

幻读 概念 一个事务中的两次同样的查询不一致。 解决幻读&#xff1a; RR&#xff1a;使用select ... for update加排他锁 for update的引入是为了幂等性问题&#xff0c;如果不加for update可能出现并发问题。 【参考&#xff1a;MySQL幻读详解及解决方法_学而不思则忘的博…

Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像

图像通常用于表示 Word 文档中的重要信息。在文本旁边包含图像使内容更具吸引力。在某些情况下&#xff0c;您可能需要以编程方式提取嵌入在 Word 文档中的图像。为此&#xff0c;本文介绍了如何使用 Java 从 Word 文档中提取图像。 Aspose.Words for . java 最新下载&#xf…

著名歌唱家大衣哥太豪横了,参加商演被主办方请到五星级酒店就餐

自从农民歌唱家大衣哥&#xff0c;被前好友谷传民起诉后&#xff0c;他的人气不降反升&#xff0c;各种商演邀约也都不断。就在前几天&#xff0c;农民歌唱家大衣哥在商演结束后&#xff0c;被主办方邀请到五星级大酒店&#xff0c;享受了一顿丰盛的晚餐。 作为普通老百姓来说&…