使用QTemporaryFile判断目标路径是否可写

在判断一个目标路径是否可写时,QFileInfo的isWritable()并不好用,一般我们会基于QFile尝试在目标路径新建一个临时文件,通过判断文件是否创建成功间接判断目标路径是否可写。

如果自己实现这个逻辑,需要做文件打开,关闭,删除等一系列的处理。

我们可以借助QTemproryFile类实现同样的目的.

bool IsDirWritable(const QString& dir)
{
    QTemporaryFile testFile(dir+ "\\XXXXXX");
    return testFile.open();
}

是不是很简单? 注意,"XXXXXX"并不是随意写的几个字符,具体含义参考QTemporaryFile的说明文档.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要对可执行文件中的JSON配置文件进行修改,需要先将其解压缩。可以使用Qt提供的QResource类来读取和保存资源文件。以下是一个简单的示例代码,演示了如何解压缩和保存回资源文件中: ```cpp #include <QCoreApplication> #include <QResource> #include <QDebug> #include <QTemporaryFile> #include <QFile> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 获取资源文件中的配置文件 QResource resource(":/config.json"); QByteArray data = resource.data(); // 将数据保存到临时文件QTemporaryFile tempFile; tempFile.setAutoRemove(false); tempFile.open(); tempFile.write(data); tempFile.close(); // 对配置文件进行修改 QFile file(tempFile.fileName()); if (file.open(QIODevice::ReadWrite | QIODevice::Text)) { QTextStream stream(&file); QString content = stream.readAll(); content.replace("old_value", "new_value"); file.resize(0); stream << content; file.close(); // 将修改后的文件重新打包到资源文件中 QFile resourceFile(":/config.json"); if (resourceFile.open(QIODevice::WriteOnly)) { QDataStream stream(&resourceFile); stream.writeRawData(data.constData(), data.size()); stream.writeRawData(tempFile.readAll().constData(), tempFile.size()); resourceFile.close(); } } return a.exec(); } ``` 这个示例代码做了以下几件事情: 1. 使用QResource类读取资源文件中的配置文件,并将数据保存到QByteArray中。 2. 将数据保存到一个临时文件中。 3. 使用QFile类打开临时文件,并对其中的配置文件进行修改。 4. 将修改后的文件重新打包到资源文件中。 注意,这个示例代码只能在可写的目录中使用,因为它需要将临时文件保存在磁盘上。如果你需要在只读目录中使用,可以考虑使用QByteArray或QBuffer来代替QTemporaryFile

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值