Qt读取带路径的文件,不存在则创建

本文详细介绍了如何使用Qt的QFile和QDir类在指定路径下创建文件和目录,包括解析路径、检查目录和文件是否存在,以及如何进行创建。实测表明,即使在多级目录下,此方法也能够成功创建文件。
部署运行你感兴趣的模型镜像

在conf目录存在的情况下,可以用

QFile file("conf/test.json");
file.open(QIODevice::WriteOnly);
file.close();

直接在conf目录下创建文件。但是如果没有该目录的话就复杂些了。

QString path = "conf/test.json";//带路径的文件

//解析出路径(不含文件名)和文件名
int first = path.lastIndexOf ("/");
QString name = path.right (path.length ()-first-1); //test.json
QString filePath = path.left (first); //conf

//如果路径不存在,则创建
QDir* dir = new QDir();
if(!dir->exists(filePath)){
    dir->mkpath(filePath);
}

//如果文件不存在,则创建
QFile file(path);
if(!file.exists()){
    file.open(QIODevice::WriteOnly);
    file.close();
}

//读文件
file.open(QIODevice::ReadOnly);
file.close();

实测诸如“1/2/3/4/5/test.txt”的带多级目录的文件也能创建成功。
或许Qt有封装这种功能,但是我还没有发现。

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

当处理文件操作时,如果遇到“文件路径存在”的错误提示,在Qt中你可以通过多种方式进行检查和处理。这通常意味着你在尝试访问一个特定路径下的文件或目录时,该路径存在。 ### 检查和创建文件路径 为了应对这种情况,可以先检查路径是否存在,并根据需要创建它: ```cpp #include <QDir> #include <QDebug> bool ensurePathExists(const QString &path) { QDir dir(path); // 如果路径存在,则尝试创建整个路径结构 if (!dir.exists()) { qDebug() << "Path does not exist, attempting to create:" << path; // 创建所有必要的上级目录 bool created = QDir().mkpath(path); return created; // 返回是否成功创建路径 } qDebug() << "Path exists:" << path; return true; } ``` 上述代码首先利用`QDir::exists()`判断给定路径是否存在;若存在则调用`QDir::mkpath()`试图递归地创建所需的完整路径树。 ### 处理文件读取/写入前后的路径验证 当你准备打开某个文件之前,应当总是确认它的所在目录确实存在: ```cpp QString filePath = "/some/path/to/file.txt"; QString folderPath = QFileInfo(filePath).absolutePath(); if (ensurePathExists(folderPath)) { QFile file(filePath); // 现在安全地继续进行文件的操作... } else { qWarning("Failed to prepare the necessary directory."); } ``` 这样做能够有效避免由于目标位置缺失而导致的应用程序崩溃或其他异常情况发生。 ### 相关建议 - **日志记录**:对于生产环境中运行的应用来说,在捕获到类似的问题之后做好详细的日志是非常重要的。 - **用户反馈**:向最终用户提供清晰的信息也很关键,告诉他们哪里出了错以及接下来该如何做可以帮助解决问题。 - **配置管理**:确保应用程序的默认设置、安装包内含的数据等都指定了正确的相对或绝对路径
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值