Qt 相对路径访问不成功,及打开文件失败问题 (***)

目录

关于Qt中相对路径的问题

QT 相对路径访问不成功原因

QT 【QFile无法写入文件问题(文件名字以及文件关闭)】

QT打开文件失败问题

Linux下QT QFile写方式打开文件失败 (***):一种解决路径问题的思路。

Qt小技巧: 文件绝对路径

------------------------------------------------------------

==================================

Qt小技巧: 文件绝对路径

代码

#include <QDebug>
#include <QFileInfo>
#include <QFile>

int main(int , char **)
{
    QString fileName = "./hello.txt";
    /*
        确保测试文件存在
    */
    if (!QFile::exists(fileName))
    {
        QFile file(fileName);
        if (file.open(QIODevice::ReadWrite))
            file.close();
    }

    /* 文件绝对路径获取 */
    QFileInfo info(fileName);
    qDebug() << "absoluteFilePath: " << info.absoluteFilePath();
    qDebug() << "absolutePath: " << info.absolutePath();

    return 0;
}

运行结果


————————————————
版权声明:本文为CSDN博主「听我一言」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/halo_hsuh/article/details/119919858

Linux下QT QFile写方式打开文件失败 (***)

  https://bbs.csdn.net/topics/370064146

这是一种解决路径问题的思路。

1. 文件是否存在

file.exists() 判断下文件存不存在,不存在就是你路径的问题。

QFile file(":/userinfo.txt");  // 路径不对吧:资源文件的路径格式":/",是只读的。

2. 使用全路径访问

QFile file("userinfo.txt"); 用当前路径或者全路径

3. 如果使用全路径 OK,只是“相对路径”产生了问题

3.1. 在 .pro文件中,设置了 TARGET = app_abc/def

使得当前路径被设置成了 非默认格式,由此产生问题

3.2. 重新设置 当前路径 QDir::setCurrent

QDir::setCurrent(app.applicationDirPath());//添加这句 立马可以

3.3. 其他原因,甚至在运行时,导致了工作路径的改变。

3.3.1. 打开了错误路径下的文件:到底是、哪一个文件?

源文件目录下,有一个读写文件;

在编译目录下,同样有一个读写文件;

在使用相对路径时,指的是在编译目录下的文件,而不是源文件目录下的同名文件。

QT 【QFile无法写入文件问题(文件名字以及文件关闭)】

第一种错误:如果你名字中如果存在:分号,就会导致文件创建文件名字错误

文件名字可能会成为123 ,而不是123:123.text

    QFile file("d:/123:123.txt");
    file.open(QIODevice::ReadOnly);
    file.write("123");
    file.close();

第二种错误:如果是单纯的打开文件,写完之后么没有关闭文件也就是没有保存文件,就会发现

写完文件之后文件还是空的

    QFile file("d:/123.txt");
    file.open(QIODevice::ReadOnly);
    file.write("123");

————————————————
版权声明:本文为CSDN博主「IT小生lkc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_20017379/article/details/124485067

关于Qt中相对路径的问题

在开发Qt项目过程中,涉及到写入文件方面,出现了一些关于相对路径的问题
首先尝试的是直接在Qt资源文件qrc中添加文件,然后发现文件不能以写入的模式打开。查了一下,发现 qrc文件支持的是只读模式,不能写入。
后面在.pro所在目录下创建文件,出现的问题是访问路径出错,没有文件,发现是对Qt中相对路径的的理解不对。
最后在构建目录(可执行文件.exe所在目录)下面创建文件成功通过。

总结一下:
Qt中相对路径:

//相对对qrc中的文件访问路径(:/ 表示 qrc文件目录
:/文件路径


//相对构建目录相对路径(./ 表示 构建目录下
./文件路径

如果只是对文件进行读取操作,可以直接添加在qrc中(用:/访问目录下),

如果需要进行写入,又使用相对路径,需要注意源码中的(./)路径是在构建目录下的。


————————————————
版权声明:本文为CSDN博主「qq_40300116」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40300116/article/details/108873512

QT 相对路径访问不成功原因

最近用相对路径 资源必须在资源文件夹,否则访问失败

实际测试只要在main 函数添加下面依据 即可

int main(int argc, char *argv[])

{

    QApplication app(argc, argv);

    Widget *widget = new Widget;

       QDir::setCurrent(app.applicationDirPath());//添加这句 立马可以


        widget->show();

        return app.exec();

}

转载于:https://blog.51cto.com/11496263/1879140

QT打开文件失败问题

QT打开文件失败问题_qt打开配置文件失败_TANNNNNIM的博客-CSDN博客

QT资源文件-QFile Write/WriteOnly/ReadWrite打开失败说明

前言

在使用QT进行开发过程中,常常会使用qrc(资源文件),比如一些配置文件,图片,图标(icon)等,但是一些没有经验的小伙伴会想着将配置文件的数据进行修改,发现无法以代码的方式对资源文件进行修改。
代码说明

#include <QCoreApplication>
#include <QtDebug>
#include <QFile>
#include <QIODevice>

int main(int argc, char *argv[])
{
    QFile file(":/config/1.xml");//1.xml是资源文件目录config下的文件
    qDebug() << "file_exist:" << file.exists(); //假如资源文件存在,返回 true
     bool b_open = file.open(QIODevice::WriteOnly);//返回false
    b_open = file.open(QIODevice::ReadOnly);// 返回true
}

结论

QT中,使用QFile能够读取资源文件,但是不能以写的方式打开文件,因为资源文件(路径以“:”和普通文件区别)一般都是作为只读的形式存在,

如果想操作资源文件,那么路径就不要以":"开头,这样QT就会将该文件当做普通文件,就可以对该文件进行读写操作了。

————————————————
版权声明:本文为CSDN博主「abcd552191868」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/abcd552191868/article/details/122579095

关于Qt中使用QFile打开文件时遇到问题的分析

  关于Qt中使用QFile打开文件时遇到问题的分析_qfile打开文件失败原因_时光清浅,不觉多年的博客-CSDN博客

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值