QT中的文件操作

2023-10-27

QT中的文件操作基于QFile类。

1、打开文件:open()

        bool open(File *fh,QIODevice::OpenMode mode,QFileDevice::FileHandleFlags handleflags = DontCloseHandle);

        File *fh:文件的指针

        QIODevice::OpenMode mode:打开文件的模式

                文件的模式:

                        QIODevice::NotOpen  //没有打开
                        QIODevice::ReadOnly  //以只读的形式打开文件
                        QIODevice::WriteOnly //以只写的形式打开文件,请注意,此模式意味着截断。
                        QIODevice::ReadWrite//打开文件时可读可写
                        QIODevice::Append  //以追加的形式打开文件
                        QIODevice::Truncate //以截取的形式打开文件
                        QIODevice::Text       //打开文本文件
                        QIODevice::Unbuffered //无缓冲形式打开文件,绕过设备中的任何缓冲区。
                        QIODevice::NewOnly //如果要打开的文件已存在则失败。仅在文件不存在时创建并打开该文件
                        QIODevice::ExistingOnly

                        如果要使用多种模式打开文件,那么在模式之间用“|”符号连接

        QFileDevice::FileHandleFlags handleflags = DontCloseHandle:打开文件的处理标志

        返回值:如果文件打开成功返回true,否则返回false

        virtual bool open(QIODevice::OpenMode mode) override
        参数1--QIODevice::OpenMode mode:打开文件的模式

2、读取文件:read()

        virtual qint64 readData(char *data,qint64 len) override

        override:这是C++中的保留字,区分上下文,作用是为了防止出现意外的继承行为

        返回值:qint64 -->longlongint

        char *data:从data里面读取数据

        qint64 len:读取的长度

        QByteArray read(qint64 maxSize)
        返回值:QByteArray--字节数组
        qint64 maxSize:从文件里读取maxSize大小的数据

        QByteArray readAll()
        返回值:QByteArray--字节数组
        从文件里一次性读取所有内容并存入到QByteArray变量里

        qint64 readLine(char *data, qint64 maxSize)
        返回值:qint64----longlongint
        char *data:从data中按行读取数据
        qint64 maxSize:从data中按行读取数据的最大长度

        QByteArray readLine(qint64 maxSize = 0)
        返回值:QByteArray--字节数组
        qint64 maxSize = 0:按行读取文件里最大的数据的长度

3、写入文件:write()

        virtual qint64 writeData(const char *data, qint64 len) override
        向指定的缓冲区里写入内容
        const char *data:写入的内容保存的位置
        qint64 len:写入缓冲区里的字符的长度

        qint64 write(const char *data, qint64 maxSize)
        向指定的缓冲区里写入内容
        const char *data:写入的内容保存的位置
        qint64 maxSize:写入缓冲区里的字符的最大长度

4、关闭文件:close()

        close(关闭的文件)

5、文件读写的两种方式(文本流、数据流),跟文件读写类似

        (1)、文本流:用于读写文本内容。类:QTextStream

                QTextStream()
                QTextStream(QIODevice *device)
                QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
                QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
                QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite)
                QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)

                QTextCodec * codec() const; //获取操作文件的里文本内容的编码格式

                QString readAll();  //以文本流的方式读取文件的内容

                QString readLine(qint64 maxlen = 0);  //以行的方式读取文本内容

                QTextCodec *codecForName(const QByteArray &name)//告诉编译器本地编码格式

                QTextCodec *codecForName(const char *name);

                void setCodec(QTextCodec *codec) //用于设置文本内容的编码格式

                void setCodec(const char *codecName)//用于设置文本内容的编码格式,setCodec(“UTF-8”)--setCode(“utf-8”)

                运算符重载的方法来实现文本流输入输出:                

                        QTextStream &operator<<(const char *string) //将const char *string类型的数据存入到文本流里

                        QTextStream &operator>>(QString &str)//将文本流里的数据存入到QString &str里

        (2)、数据流:用于读写二进制数据,类:QDataStream    

                QDataStream()
                QDataStream(QIODevice *d)
                QDataStream(QByteArray *a, QIODevice::OpenMode mode)
                QDataStream(const QByteArray &a)

                int readRawData(char *s, int len) //从数据流里读取len个数据

               运算符重载的方法来实现数据流输入输出:

                        QDataStream &operator<<(const char *s) //向数据流里存入数据
                        QDataStream &operator>>(const char *s) //从数据流里读取数据

6、获取文件信息,类:QFileInfo

        QFileInfo()
        QFileInfo(const QString &file)
        QFileInfo(const QFile &file)
        QFileInfo(const QDir &dir, const QString &file)
        QFileInfo(const QFileInfo &fileinfo)

        QString absoluteFilePath() const //获取文件的绝对路径,包含文件名
        QString absolutePath() const  //获取文件的绝对路径,不包含文件名
        QString baseName() const  //获取文件名称
        QString bundleName() const  //获取文件名,但是没有后缀---macos&ios
        QString fileName() const  //获取文件名
        QString filePath() const  //获取文件路径
        qint64 size() const  //获取文件的大小
        QString suffix() const  //获取文件的后缀
        void swap(QFileInfo &other)  //交换文件信息管理的对象

7、文件目录,类:QDir

        QDir(const QDir &dir)
        QDir(const QString &path = QString())
        QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)

        QString absoluteFilePath(const QString &fileName) const  //获取文件的绝对路径
        QString absolutePath() const//获取文件的绝对路径,不包含文件名
        bool cd(const QString &dirName) //QDir dir    dir.cd("D:/") 切换到不同的目录 ,切换成功 true,切换失败--false  
        QString dirName() const //获取目录的名称
        bool mkdir(const QString &dirName) const //创建目录
        bool mkpath(const QString &dirPath) const //创建文件路径
        bool remove(const QString &fileName) //移除文件
        bool rmdir(const QString &dirName) const  //移除文件包括路径,使用时尤其注意
        bool rmpath(const QString &dirPath) const //移除文件路径

        
   

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT中的文件操作 的相关文章

  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • Qt中如何获取鼠标在屏幕上的位置?

    我想获取屏幕上的鼠标坐标 我怎样才能在 Qt 中做到这一点 在 Windows 上 使用 C 我正在做类似答案中建议的事情对于这个问题 https stackoverflow com q 11737665 1420197 正如文档所述 QC
  • QTcpSocket 有时不发送数据

    我有两个 QT 应用程序 一个应用程序可以被认为保存了大数据 它每秒向第二个应用程序发送大约 10 KB 的数据块 之前我尝试使用QUdpSocket来传输数据 但由于MTU限制在2 5K左右 并且需要自己分割和重新组合数据 所以我改用QT
  • 在 Qt5 中,是否需要 Q_INVOKABLE 来从 QML 调用公共 QObject 函数?

    我刚刚意识到我可以调用暴露于 QML 的对象的几乎任何函数 现在我对 Q INVOKABLE 很好奇 Qt5docs http doc qt io qt 5 qtqml cppintegration exposecppattributes
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • 即使在可访问性中勾选应用程序,AXIsProcessTrustedWithOptions 也不会返回 true

    As this question https stackoverflow com questions 17693408 enable access for assistive devices programmatically on 10 9
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • Qt:如何连接到 SQLite?

    我安装了 SQLite3 解压到 c sqlite 创建了一个数据库 c sqlite mzsales 现在我试图在 QTableView 中显示其内容 QSqlDatabase db QSqlDatabase addDatabase QS
  • 无法在带有 QSortFilterProxyModel 的 QTreeView 的点击信号中使用 itemFromIndex

    我有一个 QTreeView 在视图和 QStandardItemModel 之间有一个 QSortFilterProxyModel 来对树进行排序 然后我想通过 clicked 信号对视图中的点击进行操作 模型 视图的设置类似于 mymo
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • Qt 是否已经有了自己的 new 和 delete 运算符?

    我正在使用一个QGraphicsScene小部件并在其上显示一些点QGraphicsRectItem 这意味着要拨打很多电话new addItem 当出现时 并且removeItem delete摆脱未使用的点 当然 对于性能问题 我已经实
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • Qt - 获取互联网上托管的网页的源代码(HTML 代码)

    我想获取网页的源代码 HTML 例如StackOverflow的主页 这是我到目前为止编写的代码 QNetworkAccessManager manager QNetworkReply response manager get QNetwo
  • 是否可以在 Qt Creator 中将 Qt 样式表与升级的小部件一起使用?

    我正在尝试使用 Qt 样式表对标准小部件进行一些重大的重新设计 因此 在为不同的小部件手动完成大部分工作之后 objectName选择器 我决定以某种方式对类似的小部件进行分组 例如我有多个QFrames其作用类似于内部表单中的标题 我希望

随机推荐

  • Java Swing编写的一个猜拳小游戏

    18年在学校时候写的 整理目录发现的 这个游戏当时是模仿一个微信小程序 效果截图 里面所用到的四张图片放在百度云 链接 https pan baidu com s 1pnbcOCDpHzA h2s 56wDWg 提取码 hjvv 代码在此
  • 卷积神经网络(CNN)实现mnist手写数字识别学习

    活动地址 CSDN21天学习挑战赛 目录 一 前期工作 1 设置GPU 使用CPU可以忽略这一步 2 导入数据 3 归一化 4 可视化图片 5 调整图片格式 二 构建CNN模型 三 编译模型 四 训练模型 五 预测 一 前期工作 我的环境
  • 自定义el-table表头

  • [翻译]欢迎使用C#9.0

    本文由公众号 开发者精选资讯 微信号 yuantoutiao 翻译首发 转载请注明来源 C 9 0 is taking shape and I d like to share our thinking on some of the majo
  • 【Unity】【ARPG开发日志】【12- 17】角色跳跃

    添加跳跃动画 通过settrigger触发跳跃 PlayerInput public bool jump void Update jump Input GetKeyDown KeyJump Controller anim SetT
  • vscode php配置出错,VS Code 调试 PHP有关配置

    一 安装VS CODE WampServer 二 用VS Code 打开php项目后 提示 Cannot validate since no PHP executable is set Use the setting php validat
  • linux重启网卡的命令行,linux系统重启网卡命令

    关于win10系统开机总是要禁用重启网卡才能联网如何解决就为大家介绍到这边了 有遇到同样情况的用户们可以采取上面的方法步骤来解决 问题2已知win7下不需要删除qos协议 在跑无盘模式下以前最好不要安装厂商网卡驱动或修改win7网络协议种类
  • iOS_适配 iOS16 转屏

    iOS 适配 iOS16 转屏 问题1 iOS 16 屏幕旋转报错 Orientation BUG IN CLIENT OF UIKIT Setting UIDevice orientation is not supported Pleas
  • python 列表中最长字符串,Python选择列表中最长字符串的最有效方法?

    I have a list of variable length and am trying to find a way to test if the list item currently being evaluated is the l
  • 大数据量定时超时-精确到秒

    一 背景 开发过程中或多或少会遇到某些场景 要求数据在规定的时间内如果没处理就要失效掉 如 用户下单 订单在30分钟内没支付就要自动取消 防止长时间占用库存等 面对这种情况我们来扒拉一下 系统启一个定时任务 定时扫库 取出超过30分钟的数据
  • 蓝桥杯2020年第十一届国赛真题-重复字符串

    说在前面 本题的标程是存在问题的 下面会分析标程与正确程序 题目 题目连接 题解 思维吧 整体思路 将字符串分割成k段 假设每段m个字符 我们统计每段相同位置的每种字符出现的次数 每段都统计上后 每个位置 0 m 1 都取出现次数最多的字符
  • 排序算法-选择排序

    文章目录 关于选择排序 选择排序设计思路 选择排序实现代码 关于选择排序 选择排序是排序算法中最简单的一种 它的工作过程是基于多次重复性的遍历当前数字集合得出并最大值 最小值并剔除的行为来进行的 选择排序设计思路 关于选择排序设计思路 非递
  • wx.getLocation接口申请失败 失败原因总结 解决思路 解决方案 案例

    wx getLocation接口申请失败 失败原因总结 解决思路 解决方案 案例 目录 wx getLocation接口申请失败 失败原因总结 解决思路 解决方案 案例 一 添加类目和设置主营类目 基本设置 服务类目 二 在开发管理 接口设
  • python爬取京东商品列表信息

    爬遍电商之京东篇 目标是爬取指定商品的商品列表信息 包括商品名 价格 评论数 店铺名 打开京东页面 随便搜一个笔记本 F12打开NetWork开始抓包 翻个3页 遇到断点就按F8执行 然后看到第一个返回内容的ajax请求 是返回了第1页的后
  • Python Unittest简明教程

    1 概述 单元测试是一种软件测试方法 通过来测试源代码中的各个单元 例如类 方法等 以确定它们是否符合要求 直观上来说 可以将单元视为最小的可测试部分 单元测试是程序员在开发过程中创建的短代码片段 它构成了组件测试的基础 2 unittes
  • IC项目小任务(ncsim/tcl脚本实现)。提取SRAM实例层次结构、对应module名称、对应位宽深度

    层次结构对应的例化名和spec sram里面的模块名一一对应 ncsim终端命令里 可以使用脚本实现 set scope list find scope tbench U top recursive all internals wires
  • 回形数的思路,规律及输出代码(数组章节即学即练)

    整体思路图 规律解释及代码 package shuzu import java util Scanner public class shuzu public static void main String args 回形数整体思路 步骤 1
  • 如何修改容docker容器的shmsize共享内存大小

    很多同学在docker里面运行程序时会得到这样的错误 RuntimeError DataLoader worker pid 6209 is killed by signal Bus error It is possible that dat
  • uniapp引入uview组件库

    uniapp引入uview组件库 引言 引入方法 引言 新学期又双叒开始了 一看学校的教程要求少不了得做个小的demo为最后的课程设计做准备的 通常这个课程设计是比较花时间的 所以这次决定提前准备 毕竟都大三了 估计下学期就得去图书馆 坐牢
  • QT中的文件操作

    QT中的文件操作基于QFile类 1 打开文件 open bool open File fh QIODevice OpenMode mode QFileDevice FileHandleFlags handleflags DontClose