简述

在QT中,我们时常要对文件进行各种操作,比如文件的创建、写入、拷贝和删除等等,这些都要用到QFile类。

QFile类提供了读写文件的接口。一般情况下,我们可以直接在调用构造函数的时候传递文件名,这是比较方便的方法。或者使用QFile创建对象,再调用setFileName()方法来设置文件路径。其中文件名中的路径分隔符要求必须是'/',其他分隔符QFile不支持。

常用接口

QFile构造函数:

QFile(const QString & name)

QFile(QObject * parent)

QFile(const QString & name, QObject * parent)

QFile的常用函数:

文件打开模式:


代码之路

1.创建并打开文件.

C++
//初始化时加载文件路径
QFile file("F:/test/xxx.txt");
//以读写的方式打开文件,成功返回true,失败返回false
//想用其他方式打开文件,请看上面的文件打开模式
bool ok = file.open(QIODevice::ReadWrite);
//如果文件不存在,则创建并打开该文件

2.判断文件是否存在.

C++
//判断指定文件是否存在.也可以用来判断在指定路径下是否有文件和你将要创建的文件重名.
//存在返回true,不存在返回false
bool exist = QFile::exists("F:/test/xxx.txt");

3.拷贝文件.

C++
//把D盘里的xxx.txt拷贝到到F盘,命名为sss.txt
//拷贝成功返回true,失败返回false
bool ok = QFile::copy("D:/xxx.txt", "F:/sss.txt");

4.给文件重命名

C++
QFile file("F:/xxx.txt");
bool ok = file.rename("F:/sss.txt");
//重命名成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt", "F:/sss.txt");

5.获取用户对指定文件的权限,是否可读

C++
QFlags<QFileDevice::Permission> power = QFile::permissions("F:/xxx.txt");
//判断文件所有者是否可读
if (power.testFlag(QFile::ReadOwner))
qDebug("Can Read!");

6.写入文件

C++
//定义文件内容字符串
QString str= "写入文件的内容";
QFile file("F:/xxx.txt");
//打开文件,不存在则创建
file.open(QIODevice::ReadWrite | QIODevice::Text);
//写入文件需要字符串为QByteArray格式
file.write(str.toUtf8());
file.close();

7. 读取文件数据

C++
//先打开文件
QFile file("F:/xxx.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text); //使用QTextStream一行一行读取文件
QTextStream in(&file);
while (!in.atEnd())
{
QString line = in.readLine(); //整行读取
qDebug() << line;
}

8.删除文件

C++
QFile file("F:/xxx.txt");
bool ok = file.remove();
//删除成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt");

9.获取文件夹下所有文件

C++
QDir *dir = new QDir("F:/");
QStringList filters;
filters << "*.png" << "*.jpg" << "*.bmp"; //过滤器,过滤你想要的文件后缀
//用链表保存过滤的文件名
QList<QFileInfo> *fileInfo = new QList<QFileInfo>(dir->entryInfoList(filters)); //获取文件数目、文件名称
for(int i = 0; i < fileInfo->count(); i++)
{
//QFileInfo(路径名的Qstring字符串).filename可以直接取到路径中的文件名
qDebug() << fileInfo->at(i).fileName();
}

————————————————

版权声明:本文为CSDN博主「Sakuya__」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Sakuya__/article/details/87806135

QT 对文件的操作(创建、拷贝、写入、删除)的更多相关文章

  1. 【QT】文件读写操作

    读取输出: QFile file("D:/Englishpath/QTprojects/1.dat"); if(!file.open(QIODevice::ReadOnly)) { ...

  2. C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!

    https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new Ope ...

  3. PHP 文件夹操作「复制、删除、查看大小」递归实现

    PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...

  4. PHP 文件夹操作「复制、删除、查看大小、重命名」递归实现

    PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...

  5. javascript数组操作(创建、元素删除、数组的拷贝)

    这篇文章主要介绍了javascript数组操作,包括创建.元素的访问.元素删除.数组的拷贝等操作,还有其它示例,需要的朋友可以参考下 1.数组的创建 复制代码 代码如下: var arrayObj = ...

  6. PHP 文件夹操作「复制、删除、查看大小」迭代实现

    "既然递归能很好的解决,为什么还要用迭代呢"?主要的原因还是效率问题-- 递归的概念是函数调用自身,把一个复杂的问题分解成与其相似的多个子问题来解决,可以极大的减少代码量,使得程序 ...

  7. 节点操作-创建并添加&删除节点&替换&克隆节点

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  8. java文件IO操作

    package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream ...

  9. PHP 文件和文件夹操作

    文件夹操作 创建文件夹 mkdir(名称,权限,递归创建):创建文件 例如: #创建文件夹 mkdir('./aa') # 创建 aa 文件夹 mkdir('./aa/bb') # 在 aa 目录下创 ...

  10. Qt模拟C#的File类对文件进行操作

    其实只是QT菜鸟为了练习而搞出来的 文件头: #include <QFile> #include <QString> #include <iostream> #in ...

随机推荐

  1. 深入浅出容器学习--Docker网络

    一.Docker的网络概念 容器网络模型主要包含了三个概念: network:网络,这里可以理解为一个Driver,是一个第三方网络栈,包含多种网络模式. 单主机网络模式(none.host.brid ...

  2. ArkUI-X平台桥接Bridge说明

    简介 平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递.ArkUI侧调用平台的方法.平台调用ArkUI侧的方法. 以Android平台为 ...

  3. 技术干货 |看我如何来解Web Terminal假性输入框

    编者按 写在前面的话 在介绍本篇文章的时候,先说一下本篇文章的一些背景.笔者是基于公司的基础建设哆啦 A 梦(Doraemon) (https://github.com/DTStack/doraemo ...

  4. 学习CAE软件有什么方法技巧?

    在工程设计和制造领域,计算机辅助工程(CAE)软件已经成为不可或缺的工具.然而,学习使用这类复杂软件需要投入大量时间和精力.为了帮助您更快地掌握CAE软件,本文将分享一些高效的学习方法与技巧. 明确学 ...

  5. MySQL 02 日志系统:一条SQL更新语句是如何执行的?

    比如执行一条更新语句: update T set c=c+1 where ID=2; 首先,更新语句也会走一遍查询语句的流程.除此以外,更新还涉及两个日志模块,分别是redo log和binlog. ...

  6. C# WinFrom 中程序完全退出,终止

    https://wenku.baidu.com/view/621fbbec0066f5335b81218f.html 一.关闭窗体在c#中退出WinForm 程序包括有很多方法, 如:this.Clo ...

  7. mac提示软件提示已损坏,需要移到废纸篓的解决方法

    方式1 允许任何来源的应用.在系统偏好设置里,打开"安全性和隐私",将"允许从以下位置下载的应用程序"设置为"任何来源". 并打开终端,执行 ...

  8. vuePress2.x 多页面 多目录生成方案

    前言 因为官网介绍的都只有一个'一级标题' 只有一个markdown文件 最终编译后也只有一个html文件,类似于spa 单页项目 如何才有多页项目呢 百度查询 网上插件库有很多,大部分不能用, 后来 ...

  9. Jetpack Compose学习(16)——ModalBottomSheet(底部弹窗)

    原文地址: Jetpack Compose学习(16)--ModalBottomSheet(底部弹窗)-Stars-One的杂货小窝 接手新公司项目里,有代码用到了这个弹窗,由于需要重构架构和进行相关 ...

  10. FILE LINE 调试手段.

    __FILE__,__LINE__ 输出什么文件,输出在代码里面的多少行 首先在头部使用这个 #define __DEBUG__ #ifdef __DEBUG__ #define DEBUG(form ...