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

在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有封装这种功能,但是我还没有发现。

  • 0
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Linux 下使用 QT 读取中文的 ini 文件,需要注意文件编码的问题。如果 ini 文件使用 UTF-8 编码,那么使用 QSettings 类即可直接读取中文字符。如果 ini 文件使用其他编码方式,你需要根据实际情况设置编解码器。 以下是一个读取 GB2312 编码的 ini 文件的例子: ```c++ #include <QCoreApplication> #include <QDebug> #include <QSettings> #include <QTextCodec> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建 QSettings 对象,指定 ini 文件路径和格式 QSettings settings("/path/to/gb2312/file.ini", QSettings::IniFormat); // 设置编解码器为 GB2312 QTextCodec *gbkCodec = QTextCodec::codecForName("GB2312"); settings.setIniCodec(gbkCodec); // 读取 key 为 "用户名" 的值 QString username = settings.value("用户名").toString(); qDebug() << "用户名:" << username; // 读取 key 为 "密码" 的值 QString password = settings.value("密码").toString(); qDebug() << "密码:" << password; return a.exec(); } ``` 在这个例子中,我们首先创建了一个 QSettings 对象来读取 GB2312 编码的 ini 文件中的数据。然后,我们获取了 GB2312 编解码器,并将其设置为 ini 文件的编解码器。接着,我们通过 `value()` 方法读取指定 key 的值即可。 需要注意的是,如果你要读写的文本数据使用的编码方式不同于 GB2312 或 UTF-8,你需要根据实际情况调用相应的方法来设置编解码器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值