Qt关于路径的处理(绝对路径、相对路径、路径拼接、工作目录、运行目录)

您所在的位置:网站首页 绝对于相对 Qt关于路径的处理(绝对路径、相对路径、路径拼接、工作目录、运行目录)

Qt关于路径的处理(绝对路径、相对路径、路径拼接、工作目录、运行目录)

2024-07-12 21:24| 来源: 网络整理| 查看: 265

1.绝对路径、相对路径

绝对路径与相对路径关于绝对路径和相对路径的概念就不多说了,具体看在qt中的运用,比如文件当前路径下有一个“1.txt”的文本文件:

那么相对路径就是“1.txt”如下图所示:

 程序运行后打印了“exist”,说明路径没有问题。

本例中的这个文件绝对路径也就是“F:/QtProject/filepath/1.txt",改为这个运行后也是打印“exist”。

一般代码中都是比较推荐使用绝对路径的不推荐使用相对路径。并且要注意不同操作系统使用的斜杠不同,Linux和window系统是相反的。 

那么比如一个文件放在程序目录下在代码中怎么获取他的绝对路径了?qt有一个方法“currentPath”

比如本例中就可以写为“QDir::currentPath() + "/1.txt"”。

2.路径的拼接

处理文件很多时候会涉及到文件路径的拼接,比如上面给的例子用的currentPath那个就算是,拼接加入使用纯QString去处理的话就会很容易出错,比如某文件路径path=dir(文件所在目录里)+“/"+filaName(文件名)。这里比如dir末尾包含了斜杆,然后没注意又加了一个斜杆导致路径错误或者使用的是正斜杠但是在linux下不同,总之使用起来比较麻烦,所以可以使用Qt的一个方法“cleanPath”。比如本例子中路径可以写为“QDir::cleanPath(QDir::currentPath() + QDir::separator() + "1.txt")”。然后程序运行可以看到还是打印“exist”。使用“cleanPath”和“separator”就避免了上面所说会遇到的问题。比如上面我把路径多写了斜杠:

QString path = QDir::cleanPath(QString("F:/QtProject/filepath/") + QDir::separator() + QString("/1.txt"))

程序运行还是打印的是“exist”。

假如使用QString进行字符串拼接就会出错。处理文件路径以及文件名相关的获取与设置最后不要过度使用字符串的拼接与裁剪比如你想要通过一个文件的绝对路径获取他的文件名,可能会有人用字符串分割来做但是容易出问题就直接采用qt的方法就行,还是以本例为例通过绝对路径获取对应文件名:

QString path = QDir::cleanPath(QString("F:/QtProject/filepath/") + QDir::separator() + QString("/1.txt")); QString fileName = QFileInfo(path).fileName();

 

使用QFileInfo来辅助获取直接一步到胃跟不需要字符串的截取。

3.工作目录和运行目录

我之前碰到一个问题,程序自己测试完没问题结果到了现场却出现了问题,然后通过现场发来的日志分析是没有找到对应的文件,然后让现场的测试到对应目录下却发现文件都在并没有缺少。最后才发现客户运行我们程序和我们并不一样,还是以上面的例子为例:

#include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString path = QDir::cleanPath(QDir::currentPath() + QDir::separator() + QString("/1.txt")); if (QFile::exists(path)) qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3