[Qt] Qt文件操作 [2013-08-13更新]

Qt QFile文件操作详解 Qt QFile文件操作详解 很多应用程序都需要具备操作文件的能力,包括对文件内容进行读/写、创建和删除文件等,甚至某些应用程序的诞生纯粹是为了操作文件,比如 WPS Office、PDFedit 等。为此,Qt 框架提供了 QFile 类专门用来操作文件。 QFile文件操作 QFile 类支持对文件进行读取、写入、删除、重命名、拷贝等操作,它既可以操作文件文件,也可以操作二进制文件。 使用 QFile 类操作文件之前,程序中需引入头文件。创建 QFile 类的对象,常用的构造函数有: QFile::QF 阅读详情
- 经验总结

1. 直接访问模式在输入/输出的块操作使用4千字节或更大的情况下使用最好。

2. 当每次读小量数据时,缓存访问工作的更好。

3. 重要:当使用缓存的文件工作时,数据没有被立刻写到文件中。调用flush()可以确保数据被真正地写完。 

4. 警告:如果你有一个缓存文件以同时读写方式打开,你不要在一次输入操作之后立即输出,反之亦然。你必须在输入和输出操作之间调用flush()或者一次文件定位操作,比如seek(),否则缓存中可能会包含无用信息。 

5. 如果文件不存在并且指定IO_WriteOnly或IO_ReadWrite时,文件将被创建。



- 基本操作

#include <QFile>
#include <QTextStream>

QFile file("/../filename");

- 读文件

功能:把文件的内容读取到fileContent

if ( file.open(QIODevice::ReadOnly ) )
{
    QTextStream stream( &file );
    QString fileContent;
    QString line;
    while ( !stream.atEnd() )
    {
        line = stream.readLine();           // 不包括“n”的一行文本
        fileContent.append(line).append("\n");
    }
    file.close();
}

QStringList lines;
if ( file.open(QIODevice::ReadOnly ) )
{
    QTextStream stream( &file );
    QString line;
    int n = 1;
    while ( !stream.atEnd() )
    {
        line = stream.readLine();      // 不包括“n”的一行文本
        //printf( "%3d: %sn", n++, line.toLatin1() );
        lines += line;
    }
    file.close();
}

-------------------------------------------------------------------------

- 写文件

功能:将strtmp的内容写入文件

if ( file.open( IO_WriteOnly ) )  // QIODevice::WriteOnly
{
    QTextStream stream( &file );
    stream << strtmp << "\n";
    file.close();
}

QStringList lines;
if ( file.open( IO_WriteOnly ) )
{
    QTextStream stream( &file );
    for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it )
    {
        stream << *it << "\n";
    }
    file.close();
}

-------------------------------------------------------------------------

- 删除文件

QFile::remove("/.../fileName");



- 文件打开方式

#define IO_ReadOnly      QIODevice::ReadOnly
#define IO_WriteOnly     QIODevice::WriteOnly
#define IO_ReadWrite     QIODevice::ReadWrite
#define IO_Append        QIODevice::Append
#define IO_Truncate      QIODevice::Truncate
#define IO_Translate     QIODevice::Text
#define IO_ModeMask      0x00FF

IO_Raw                   指定直接的(非缓存的)文件访问
IO_ReadOnly              以只读模式打开文件
IO_WriteOnly             以只写模式(并且截短)打开文件
IO_ReadWrite             以读/写模式打开文件,等于(IO_ReadOnly | IO_WriteOnly)
IO_Append                以附加的模式打开文件(当你想向日志文件写些东西时这个模式非常有用)
                         文件索引被设置到文件末尾,使用while循环遍历文件时需重置文件索引
                         注意如果你在附加模式中使用at()定位文件索引,结果将为定义的
IO_Truncate              截短文件
IO_Translate             在MS-DOS、Windows和OS/2下对文本文件翻译回车和换行



- 判断文件或目录是否存在

#include <QFileInfo>

QFile file("...");
QFileInfo fileInfo(file);
or
QFileInfo fileInfo;
fileInfo.setFile(filePath);

bool QFileInfo::exists () const
Returns true if the file exists; otherwise returns false.

bool QFileInfo::isDir () const
Returns true if this object points to a directory or to a symbolic link to a directory; otherwise returns false.



- 打开指定的文件夹

QDesktopServices::openUrl(QUrl("file:///C:/Documents and Settings/All Users/"));



- 遍历某个目录下的文件

#include <QDir>

QDir dir;
dir.cd("/directory");                 // 指定目录
dir.setFilter(QDir::Files);           // 过滤器
dir.setSorting(QDir::Name);           // 排序依据(此处为按名称排序)

QFileInfoList list = dir.entryInfoList();

for (int i = 0; i < list.size(); ++i)
{
    QFileInfo fileInfo = list.at(i);
    fileInfo.fileName()               // 获取文件名
    fileInfo.size()                   // 获取文件大小
}


VS2013+Qt的安装以及拷贝项目之后的错误解决办法 第一次接触关于Qt的项目,是很蒙的。特别是项目拷贝过来之后各种报错。 首先总结一下: 1. 安装VS2013 2. 安装Qt以及Qt插件 3. 配置Qt环境变量 4. 配置VS2013的QT属性信息 5.如果你是拷贝的项目,记得把.user文件删除(项目编译之后会自动生成关于Qt的一些路径配置信息,所以,要删除原项目的配置信息) 6.如果你是拷贝的项目,记得把QtMsBuild文件夹... 阅读详情

相关推荐

win7下,vs2013+qt5.3+qwt6.1.2安装配置

现在sdk做的尽量傻瓜化,基本一直下一步就可以了,不像以前还要自己编译,配置各种环境变量。 一、安装vs2013 社区版 连续确定。 出现问题: 我的系统有点小问题,提示setup blocked,needs to restart。重启之后还是不能继续,后来发现是windows update的问题,更新下就好了。 二.、安装和配置qt5.3 1.下载qt

备忘录 4313

Qt之QFileInfo的常用操作

Qt文件信息获取之QFileInfo 在Qt中为文件的操作和信息获取提供了许多方便的类,常用的有QDir,QFile,QFileInfo以及QFileDialog,在本文中主要介绍用于获取关于文件信息的QFileInfo类。 QFileInfo可以获取文件的名称和位置信息,此外,还有文件的大小,文件的访问权限以及此文件是不是一个符号链接等信息。不仅如此,我们还可以通过这个类来查看文件的创建时间,修...

没闲的小孩多酱 3267

中标麒麟V7安装Qt5.13.0

一、安装环境 中标麒麟V7 二、准备的安装包 1、Qt安装包5.13.0,下载地址https://download.qt.io/archive/qt/选择run结尾的 2、装好的Qt运行不起来,需要以下2个包 dbus-1.13.10.tar.xz 和freetype-2.10.0.tar.bz2 三、安装 QT5.13.0 1、在/home中新建Qt文件夹,把下载的Qt镜像放进去; 2、把dbus-1.13.10.tar.xz 和freetype-2.10.0.tar.bz2...

3833

Qt文件操作

Qt文件操作

m0_60259116的博客 2401

QT基础教程(QT中的文件操作)

本篇文章我们来讲解QT中的文件操作,文件操作对于QT来说是非常重要的一个点,那么下面的话将给大家详细的讲解QT中的文件操作。本篇文章就讲解到这里。

m0_49476241的博客 7740

QT应用编程: ubuntu18.04下QT5.13搭建Android开发环境(配件齐全)

一、环境介绍 操作系统: ubuntu18.04(64位)--VM虚拟机运行 QT版本: 5.13.2 二、从零开始安装软件,搭建开发环境 QT所有版本下载地址首页:https://download.qt.io/ QT5.13.2下载地址:https://download.qt.io/archive/qt/5.13/5.13.2/ 下载下来之后,直接在命令行运行这个软件包,然后根据提示下一步下一步安装即可。 注意: 如果没有QT账号,就需要先断网再重新安装,不然就需要输入QT账...

2045

Qt之文件操作 基础详解

Qt 文件操作,零基础,QFile

weixin_62370184的博客 6080

sram设计流程+memory compiler整理

→。

qq_50761108的博客 1万+

[Qt] QSettings(ini文件、注册表)[2013-08-13更新]

- ini文件读写 #include ... QSettings *iniFile = new QSettings("conf.ini", QSettings::IniFormat, this); // 解决中文读写问题(for Windows) // 程序编码设置为“SYSTEM” iniFile->setIniCodec("UTF-8"); or iniFile-

it_mac的专栏 2212

智能车赛道识别:八邻域算法的实战解析与优化

本文深入解析了智能车赛道识别中八邻域算法的核心原理与实战优化。作为兼顾性能与稳定性的经典方案,该算法通过模拟探险家环顾八方的策略,能精准追踪弯道与直道边界。文章详细拆解了代码逻辑,并提供了边界平滑、异常处理及应对十字路口、环岛等复杂场景的关键优化策略,助力开发者提升智能车视觉系统的鲁棒性与实时性。

weixin_29228781的博客 261

方法二:旋转机械动平衡精度计算

本文以实际案例为基础,系统阐述基于ISO 1940标准的动平衡精度G GG等级计算方法。通过角速度转换、许用剩余不平衡量e p e r e_{per}e per ​ 推导及G GG等级公式应用,结合惯性力偶矩、转子质量等参数,得出某转子系统的动平衡精度为G 40 G40G40。文中详细解析了公式原理与参数单位转换要点,并附完整ISO 1940动平衡等级参考表,为工程师提供从理论到实践的完整解决方案。研究结果表明,该方法可有效量化旋转机械的平衡精度,适用于风机、泵类等中低速设备的设计与调试,对提升设备运行

weixin_46153372的博客 922

Qt 5.13版本正式发布(带下载链接)

摘自Qt官网内容。快来看看新版本更新了些什么东西吧。

Qt君 1万+

STM32CubeMX | HAL库实战:ADC多通道采集模式深度解析(轮询、DMA、TIM触发)

本文深度解析了基于STM32CubeMX与HAL库实现ADC多通道数据采集的三种核心模式:轮询、DMA以及TIM触发DMA。文章通过对比分析,详细阐述了各模式的配置要点、适用场景与潜在陷阱,旨在帮助开发者根据实时性、CPU占用及采样精度等需求,选择并实现高效稳定的多通道数据采集方案。

postgres8guard的博客 971

【Qt android】Qt 5.13.0 配置android环境 Ubuntu18.0

参考链接: http://blog.chinaunix.net/uid-15732309-id-5758682.html https://blog.youkuaiyun.com/sunny_hu92/article/details/80164784

David Xiao 1885

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 406

高分SCI讨论部分必学AI写作套路!仅需五步结合GPT‑5辅助,让你的SCI论文更有说服力(附实用AI提示词)

对于很多写SCI论文的学术人来说,其实“讨论部分”才是最致命的,网上虽然有大量的写作技巧和模板提供参考,但往往让人眼花缭乱,还是不知道如何下手。即便是下手了,也很难兼顾学术性与可读性,实际上讨论部分的难点并不在于写,而在于你能研究结果说清楚。今天七哥教你借助GPT-5,用五步法结合精心设计的AI提示词,让你能在科学逻辑与语言表达上一次性解决“讨论部分”的结构、内容、润色和翻译问题,轻松写出符合高分SCI期刊要求的讨论段落。

智能AI让学术科研更容易 1330

Qt Creator13配置Android开发环境

QT Creator13是目前(2024年)最新版本,配置Android开发环境有一些不一样,走了一些弯路,记录如下。

willhu2008的专栏 3119

uni-app 实现高德 / 百度 / 腾讯地图多端导航跳转(H5最全方案)

本文介绍了一套生产级可复用的多地图导航Hook封装方案。针对开发中常见的经纬度顺序混乱、中文乱码、参数不统一等问题,提供了统一解决方案。方案支持高德、百度、腾讯三大地图平台,封装了各平台的URI参数处理逻辑,包括坐标顺序转换、名称编码、导航模式适配等核心功能。通过组合式API设计,开发者只需调用统一入口即可实现多地图导航跳转,同时保留单独调用各平台的能力。文中还总结了6大常见坑点,并推荐默认使用高德地图作为最稳定的导航方案。该方案适用于车辆定位、物流配送等多种业务场景,可封装为可复用的Hooks组件。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 537

[Qt] Qt鼠标 [2013-08-13更新]

- 鼠标光标 #include QCursor cursor; QPoint p = cursor.pos();     // 此时p表示当前鼠标光标的坐标 - 鼠标事件 用法:直接覆盖原来的处理方法 #include protected:     void mouseMoveEvent(QMouseEvent *e);     v

it_mac的专栏 1312

学Simulink--基础微电网场景实例:基于Simulink的微电网经济调度优化策略仿真

指标传统调度PSO经济调度(本文)目标值总运行成本(元/h)45.232.5(工况1)降低≥20%调度响应时间(s)25<30储能SOC范围(%)50~50(不变)28~56(动态优化)20~80弃风弃光率(%)0(强制满发)0(优化消纳)0原理:微电网经济调度通过PSO算法优化各单元出力,以总成本最小化为目标,平衡功率平衡与设备约束;建模:Simulink中用实现PSO控制器,结合PV/WT/DG/ESS模型,完成闭环优化;验证。

amy_mhd的博客 67

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Qt Creator 13-CMake更新

​2024年4月5日:Cristian Adam |评论​以下是Qt Creator 13中一组突出显示的CMake功能和修复程序。查看所有CMake更改的ChangeLog。

aggs1990的专栏 480

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

QT常用函数和总结(持续更新)

前情回顾: 我又有一个多月没写博客了,上个月太忙了,忙着毕业设计跟论文,请了一个多月的假,实习也快结束了,我把我遇到的写下来,大家一起学习。 内容: 一、trimmed //删除字符头尾空格 二、setEchoMode //设置密码保护(输入字符为小黑点) //输入什么就显示什么 1、echoLineEdit->setEchoMode(QLineEdit:...

罗斯的小老弟的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ubuntu(任何更新版本)安装QT5.12QT

文章最开始是准备使用QT5.15演示的,但是发现5.15也成在线安装的了,QT5.13又没有过就用QT5.12了,文中有个报错使用的就是在线的版本,但是依赖已经安装了,没有更新的截图,所以版本问题不要纠结,跟着文章走就是了。有一点需要说明到2023年11月以来整个QT5版本里面,QT5.15版本是唯一需要在线更新的版本,也就是官方找不到离线安装包,QT15是中文界面其UI也做出了改变,而QT6也是新出的版本存在一定的兼容性,广大学子如果学习的其他博主的文档或者视频时最好跟着配套的版本安装不一定跟着博主。

qq_46005899的博客 8702

Qt5 对xml文件常用的操作(读写,增删改查)

项目配置pro文件里面添加QT+=xmlinclude &lt;QtXml&gt;,也可以include &lt;QDomDocument&gt;项目文件:.pro 文件QT += core xml QT -= gui TARGET = xmltest CONFIG += console CONFIG -= app_bundle TEMPLATE = app ...

linux 4万+

关于QT5.13.1或者其他版本串口readyRead信号不产生的解决方法

在网上找了各种各样的资料,各种改程序,到最后还是发现,信号不产生,最后只能使用阻塞的方式去读串口接收的数据。不过不甘心,一直在寻求到底程序哪里写错了。 最后发现找到原因,不是程序的问题,是这个版本的QT的BUG,可以现在更新到5.13.2,就可以解决,不只是5.13.1有这个问题,还个别版本存在这个问题,所以只有更新软件版本了。 ...

MCJ的博客 3537

吐槽下目前最新的Qt5.13.0(618发布)

5.13.0的吐槽。选在618前后发布Qt,不知是仓促还是草率?总体来看,新的更新对初中级玩家没有多少令人感动的地方,反而新的帮助文档让人失望。

MrTsai_cpp的博客 2225
上一篇: Fedora 19 安装 NixNote(NeverNote)[2013-08-12更新]
下一篇: [Qt] Qt鼠标 [2013-08-13更新]
xb_ma
博客等级 码龄18年 23粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值