带有../的路径在win XP和Qt上不起作用

时间:2015-02-05 13:41:58

标签: qt file-io windows-xp

我有一个带有可执行文件的应用程序,它位于somwhere / appDir / bin中。我希望它打开somwhere / appDir / data中的文件。它在Win7,Win8和Vista上运行良好,但在XP上失败。我的代码是:

QString dirPath = QCoreApplication::applicationDirPath();
QFile* src;    
src = new QFile(dirPath + "/../data/file.txt");
qDebug()<<src->exists();

执行到达src->exists()时,应用程序崩溃。当路径中没有..时,一切正常。为什么?除了从路径字符串中删除目录名之外,还有其他方法可以访问父目录吗?

1 个答案:

答案 0 :(得分:0)

您可以从dirPath中删除最后一个目录名。

 QStringList dirPathSplitted = dirPath.split("/");
 dirPathSplitted.removeLast();
 QString dirPath = dirPathSplitted.join("/");
 src = new QFile(dirPath + "/data/file.txt");

我不知道这是否是最佳解决方案,但它可能有效。如果它不能仅在WinXP上运行,则可能是一个错误。您可以考虑报告它。但如果上面的内容适用于XP,它也应该适用于其他人。