qt文件操作

2023-11-06

第一步:手动获取文件路径:

#include<QFileDialog>//获取文件路径头文件


代码:

QString filcnamc=QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\ym\\Desktop\\zy");

第二步文件操作:

 //------------------------已读方式打开文件------------------------//
    QFile   file(filcnamc);//填充文件路径
    file.open(QIODevice::ReadOnly);//以读的方式打开文件
    //----------------------------一次性全部读出文件内容------------------------------------//
    QByteArray arary=file.readAll();//一次性全部读出文件内容
    //----------------------------------------------------------------//
    
    //------------------------------每次读取一行-------------------------//
      QByteArray arary_2;
      while (!file.atEnd()) {   //file.atEnd()判断还有没有可以读取的也就是判断是否为空
          arary_2+=file.readLine();//读取一行
      }
    //-------------------------------关闭文件---------------------------------------//
      file.close();//关闭文件
    //------------------------以写入的方式打开文件----------------------------------//
    file.open(QIODevice::Append);//以在末尾追加写入的方式打开文件
    file.write("I love you ,Rick!");//写入的内容
    file.close();//关闭文件
    

第三步:获取文件属性

1.查看文件属性需要的头文件


#include<QFileInfo>//查看文件属性
#include<QDebug>
#include<QDateTime>//用来输出文件生成时间


2代码
QFile file("C:\\Users\\ym\\Desktop\\zy");
QFileInfo  info(file);
qDebug()<<"绝对路径: "<<info.absoluteFilePath();
qDebug()<<"文件名:"<<info.fileName();
qDebug()<<"后缀名:"<<info.suffix();
qDebug()<<"创建时间"<<info.created();
qDebug()<<"创建时间"<<info.created().toString("yyyy.MM.dd hh:mm:ss");
qDebug()<<"文件大小:"<<info.size();

第四步定位读取:

void MainWindow::wjdw()//文件定位读取
{
    QFile file("C:\\Users\\ym\\Desktop\\zy");
    QFileInfo  info(file);
    file.open(QIODevice::ReadOnly);//以只读的方式打开文件
    file.seek(0);//定位文件指针位置为0
    QByteArray  array=file.read(5);//读取到第5个
    qDebug()<<"前5个字节: "<<array;
    qDebug()<<"当前位置: "<<file.pos();
    file.seek(15);
    array=file.read(5);
    qDebug()<<"第16到第20个字节:"<<array;
    file.close();
    
}

第五块内容文件和文件夹的显示和监视文件或者文件夹有无发生改变

需要的全部头文件

#include<QDebug>
#include<QDir>//操作文件夹
#include<QFileSystemWatcher>//文件夹监视器

1.显示选顶文件夹下的所有文件和目录

 QDir myDir("D:\\xnj");//设置当前文件夹   
 myDir.absolutePath();//显示当前路劲下的文件和文件夹
 myDir.entryList();//显示

2.指定文件后缀名显示选顶文件夹下的文件
 QDir myDir("D:\\xnj");//设置当前文件夹   
 myDir.setNameFilters(QStringList("*.cpp"));//只显示后缀名为.cpp的
 myDir.entryList();//显示 

3.在当前选定目录下生成文件夹
QDir myDir("D:\\xnj");//设置当前文件夹   
myDir.mkdir("mydir");  //在当前路径创建一个文件夹


4.文件文件夹监视器

//-------------------声明一个槽函数------------------------//   
   private slots:   
 void showMessage(const QString  &path);//文件监控槽函数 

//--------------------------------------------------------//



//-------------------定义槽函数----------------------------//
void MainWindow::showMessage(const QString &path)//文件夹监视槽函数
{
    if(path=="D:\\xnj\\mydir")
    {
       //文件夹
    }
    else if(path=="D:\\xnj\\yy.txt")
    {
        //文件 
    }
    
}

//--------------------操作代码-------------------------------------------//

 QDir myDir("D:\\xnj");//设置当前文件夹   
  
 connect(&myWatcher,&QFileSystemWatcher::directoryChanged,this,&MainWindow::showMessage);//监视文件夹有没有发生改变
   connect(&myWatcher,&QFileSystemWatcher::fileChanged,this,&MainWindow::showMessage);
//监视文件有没有发生改变
    myWatcher.addPath("D:\\xnj\\mydir");
    myWatcher.addPath("D:\\xnj\\yy.txt");
//----------------------------------------------------------------------//

6.文本流与数据流(传输文件)

文本流头数据流头文件
#include<QTextStream>//文本流
#include<QDataStream>//数据流

1.文本流的读取

//-----------------------------文本流读取---------------------------------------------//
QString filcnamc=QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\ym\\Desktop\\zy"); QFile   file(filcnamc);//填充文件路径
file.open(QIODevice::ReadOnly);//以读的方式打开文件
 QTextStream  stream(&file);
 stream.setCodec("utf-8");
 QByteArray arary_2;
 while (!stream.atEnd())  //stream.atEnd()判断还有没有可以读取的也就是判断是否为空
 {   
 
   arary_2+=stream.readLine();//读取一行
  
 }

file.close();
//----------------------------数据流读取写------------------------------------------//

 QFile file_2("C:\\Users\\1.txt");
     file_2.open(QIODevice::WriteOnly);//以写的方式打开
     QDataStream  data_stream(&file);//创建数据流
     
     data_stream<<QString("jfesfesf")<<(qint32)65;
     file_2.close();
     file_2.open(QIODevice::WriteOnly);//以读取的方式打开 
     QDataStream  data_in_stream(&file);//创建数据流
     QString str;
     qint32 n;
    data_in_stream>>str>>n;
//-----------------------------------------------------------------------------------//
总结:我本流与操作系统有关系可能会出现乱码,大小端不一致,而数据流与操作系统无关所以适合文件传输

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

qt文件操作 的相关文章

  • 从 Qt4 中的文本文件中逐字读取

    我想在 Qt4 中逐字读取一个文本文件 说实话我对它很陌生 我想在另一个文件中每行一个字写入 我可以在 C 中做到这一点 没有任何问题 但是当我尝试在 Qt4 中使用 ifstream 和 ofstream 时 我遇到了错误 这是我的 Qt
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 在 Qthread 中运行函数 - 应用程序将挂起

    我在 QT 内部线程方面遇到一些问题 include
  • 使用 PyQt 和 matplotlib 在可滚动小部件中显示多个绘图

    由于我没有得到答案this https stackoverflow com questions 12179893 creating a scrollable multiplot with pythons pylab我尝试用 PyQt 解决这
  • 使用 Qt 的网络服务

    我正在寻找使用 Qt 服务器端 实现 Web 服务的代码 如果您有任何信息 我将不胜感激 Regards 您可以使用libqxt http libqxt bitbucket org doc 0 6 qxtweb html实现服务器端Web服
  • 如何使用 ClangCodeModel 插件在 QtCreator 中设置 C++ 标准?

    抱歉 如果这是一个愚蠢的问题 但我已经尝试了几乎所有的方法 现在正在用头撞墙 问题是 带有 Clang 代码模型插件的 QtCreator 4 8 0 beta for Windows 解析我的项目 为 C 98 而实际上它是 C 17 但
  • 如何将枚举类传递给 QML?

    我正在学习QML with Qt并在通过时遇到一些麻烦enum class to qml 当我使用信号时int参数 一切正常 代码运行完美 But 麻烦就在这里 如果我使用信号与一些enum class我有参数undefinedqml 信号
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • QChart 对大数据集无响应

    我的这段代码适用于高达 1000 的数据大小 现在我用 65536 个点对其进行了测试 series new QLineSeries QList
  • 如何在 Qt-Creator 中添加自定义构建步骤?

    构建我的应用程序后 我想将其复制到特定目录 在 Windows 7 上 自定义构建步骤 cmd exe c k copy MyPlugin dll HostApp Debug plugins 但我有错误 Can t run process
  • QML改变图像颜色

    我搜索了如何对图像进行着色 格式为 svg 或 png 我尝试用一 个填充图像的矩形覆盖我的图像 但由于我的图像不是矩形 它会给整个矩形着色 而不仅仅是图像 可以用qml改变图像颜色吗 或者 是否可以使用 QPixmap 更改 qt 使用
  • 将 C++ 代码(本机客户端)移植到浏览器(Web 应用程序)

    我有一个使用 Qt creator SDK 编写的 C 模块 我想将此代码移植到任何网页上运行 而不会对最终用户损害源代码 用户应该能够在任何浏览器 Chrome Firefox Safari Explorer 上看到此模块的输出 而无需安
  • 如何在Qt3D中优化点云渲染

    我正在尝试使用 Qt3D 显示大型点云 20M pts 我第一次发现这个图书馆https github com MASKOR Qt3DPointcloudRenderer https github com MASKOR Qt3DPointc
  • 如何重写(重新实现)QFileSystemModel 中的成员函数

    我已经为此苦苦挣扎了一段时间 Qt s QFileSystemModel由于图标获取算法非常糟糕 在获取数百个文件时速度非常慢 我想完全禁用图标 它们被提取到QFileSystemModel data方法不是虚拟的 QFileSystemM
  • MSVC C4100:“应用程序”:未引用的形式参数警告

    使用 MSVC 编译时 以下代码会生成 C4100 警告 这怎么可能 显然引用了 应用程序 class ApplicationInfo public QObject Q OBJECT public static void initializ
  • 在信号/槽处理期间删除 QObject

    我知道从槽处理中删除 QObject 可能会使应用程序崩溃 因为它可能有其他排队的事件 因此 我将使用 obj gt deleteLater 而不是使用 delete obj 据我所知 obj 等待处理所有排队的事件 然后 删除 obj Q
  • 如何使用bind将成员函数作为函数指针传递?

    我试图将成员函数作为函数指针传递 这样我就不需要依赖单例或全局函数来处理 Qt 5 中的 Qt 消息 据我所知 我的 std function 是正确的类型 它具有正确的签名 并且绑定应该允许我插入隐式this指针 本质上是将成员函数传递为
  • 如何从键盘为 QTableWidget 创建信号?

    我有一张桌子 可以通过左 右 上 下按钮在里面移动 现在 当我停留在某个单元格并按空格键时 我需要创建一个信号 该信号还应该带来该单元格的坐标 我尝试使用 QTableWidget 的标准信号 但它不起作用 我该如何解决这个问题 创建一个单
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex

随机推荐

  • 对聚合函数(sum,count,min,max,avg)和having的作用和理解

    having诞生 mysql中 当我们用到聚合函数 如sum count后 又需要筛选条件时 having就派上用场了 因为WHERE是在聚合前筛选记录的 having和group by是组合着用的 下面通过实例介绍下用法 例如 selec
  • PS怎么把图片处理的更清晰

    视频没有 把步骤都写了出来 看下对你有帮助不 方法一 1 复制图层 2 去色 3 滤镜 其它 高反差保留 4 叠加 比较简单 但是效果没方法二的好 方法二 1 打开一张模糊的照片 2 选择通道 红色通道 3 复制红色通道 4 执行滤镜 风格
  • python如何实现GRPC服务,python实现简单的grpc通信

    引流个人主页 尚拙谨言的博客 CSDN博客 技术实战 学习经验分享 大道至简系列领域博主 grpc是一种基于某种协议实现不同机器间进行通信的服务框架 不同机器可以是不同的服务端 客户端 当服务端实现好某些功能后 提供一个服务接口 供不同客户
  • 用qDebug输出

    1 像printf 那样输出 a A 读入一个浮点值 仅C99有效 c 读入一个字符 d 读入十进制整数 i 读入十进制 八进制 十六进制整数 o 读入八进制整数 x X 读入十六进制整数 s 读入一个字符串 遇空格 制表符或换行符结束 f
  • 每日一道面试题之什么是C/S架构?什么是B/S架构?

    C S架构 Client Server架构 是一种分布式计算架构 其中客户端应用程序与服务器应用程序之间通过网络进行通信 在C S架构中 客户端负责用户界面和交互 而服务器负责处理业务逻辑和数据存储 例如 我们经常使用的数据库管理系统 如M
  • linux脚本解释,shell 脚本中的注释详解

    上次写了shell脚本的注释 没想到那么多人的需要 也存在不少不足 这次做个补充吧 单行注释 单行注释就比较简单了 直接在行最前端加上符号 即可 具体用法如下所示 this is comment test echo this is comm
  • Sass运算

    1 加法 加法运算是 Sass 中运算中的一种 在变量或属性中都可以做加法运算 如 box width 20px 8in 编译出来的 CSS box width 788px 但对于携带不同类型的单位时 在 Sass 中计算会报错 如下例所示
  • module 'tensorflow' has no attribute 'random_normal'

    报错 module tensorflow has no attribute random normal 说明tensorflow中没有random normal这个方法 最新一版的random normal方法已经换为 random nor
  • Python编程语言概述

    Python编程语言概述 Python是一种高级编程语言 以其简洁 易读和可扩展性而闻名 它具有广泛的应用领域 包括Web开发 科学计算 人工智能和数据分析等 本文将介绍Python的基本特性 语法结构和一些常用的编程范例 Python的基
  • makefile后缀规则

    linux下采用c 编写程序后编译成可执行文件时 敲打的命令太多 尤其是对于同时编译很多文件时尤其不便 采用后缀规则可以节省很多功夫 下面是一个简略的makefile文件 只需敲入make 源码文件名 out即可完成编译 继续学习中 CPP
  • 冒泡排序_C++

    include
  • Hadoop之CDH安装

    1 离线数据存储及查询环境部署 离线数据的存储与查询主要是以hadoop为中心的技术栈 包括hive hbase hue kylin等 部署hadoop的方式比较流行的主要有三种 1 直接部署Apache Hadoop 即手工部署 需要自己
  • 常见的阵列技术——raid0,1,5

    常见的阵列技术 Raid0 没有容错设计的条带磁盘阵列 数据条带 并行读写 最大数据容量 成本低 速度快 一块的磁盘坏了 数据全部丢失 没有冗余 低可靠性 Raid1 相互镜像 冗余最大 快速恢复 成本高 高可靠性 最多允许一半的磁盘坏 数
  • DB扩展名的数据库文件怎么打开:两种db数据库的打开方式

    两种db数据库的打开方式 现在桌面级的各种管理系统使用的数据库都是比较常见的类型 比如Access数据库 扩展名为mdb xBase类数据库 扩展名为dbf 但有两种扩展名同为db的数据库 分属两个公司的产品 一个是老牌桌面数据库Parad
  • ssd recommended_怎么看SSD还能用多久 固态硬盘寿命检测方法【详解】

    关于固态硬盘和机械硬盘的对比 理论上来说呢 固态硬盘的寿命是不如机械硬盘的 不过实际运用情况下 SSD由于抗震能力强 实际用起来寿命可能比机械硬盘还长 毕竟很多机械硬盘都是高速旋转过程中 受到碰撞导致磁头破坏 硬盘也就坏了 下面分享几种固态
  • [CISCN2021 Quals]upload

    知识点 unicode字符替代 二次渲染绕过 目录结构识别 upload php 中限制了图片的大小 长宽 以及一些字母
  • 机器学习基础(一):平均数中位数众数

    机器学习基础 一 平均数中位数众数 从一组数字中我们可以学到什么 在机器学习 和数学 中 通常存在三中我们感兴趣的值 均值 Mean 平均值 中值 Median 中点值 又称中位数 众数 Mode 最常见的值 例如 我们已经登记了 13 辆
  • 【现代谜题】晚上有四个人要过桥,只有一个手电筒,每次过桥都需要手电筒,每次最多可同时过两个人,其中甲过桥要1分钟,乙要2分钟,丙要5分钟,丁要10分钟。求最短的过桥时间。

    文章目录 题目 一 思路 方法一 方法二 二 代码 测试数据 题目 晚上有四个人要过桥 只有一个手电筒 每次过桥都需要手电筒 每次最多可同时过两个人 其中甲过桥要1分钟 乙要2分钟 丙要5分钟 丁要10分钟 求最短的过桥时间 一 思路 首先
  • R语言基本数据结构

    R语言系列文章目录 文章目录 R语言系列文章目录 前言 一 向量 二 矩阵 三 数组 四 列表 五 数据框 前言 一篇技术博客的写作不可能面面俱到 那这就意味着必须抛弃一些内容 在R语言的书里对于R的基础知识的讲解很容易找到 因此 这一R语
  • qt文件操作

    第一步 手动获取文件路径 include