【问题标题】:How to go from absolute path to relative path?如何从绝对路径转到相对路径?
【发布时间】:2014-03-16 08:28:25
【问题描述】:

我正在制作一个小程序来帮助读取文件。

我有一个 for 循环来接收来自命令行的命令:

 for (i = 1; argc > i; i++)
            {
                QString path = QDir::currentPath()+ "/" + QString(argv[i]);
                QDir dir(path);
                fileSearch(dir);
            }

从那里我调用另一种方法,在该方法中查看每个文件/文件夹并获取大小以及它是文件还是文件夹。

void fileSearch(QDir dir)
{
        foreach(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::AllDirs ))
            {
                if (info.isFile())
                {
                    qDebug() << info.path() << "is a file! its size is:" << info.size() << endl;
                }
                if (info.isDir())
                {
                    qDebug() << info.path() << "is a directory! its size is:" << info.size() << endl;
                    fileSearch(info.filePath());
                }
            }

我希望它只读取相对路径,而不是读取整个路径。所以不要读:

home/john/desktop/project/currentproject/checkdirectory is a directory! its size is: 4096
home/john/desktop/project/currentproject/checkdirectory/test.txt is a file! its size is: 4

我希望它阅读:

checkdirectory/ is a directory! its size is: 4096
checkdirectory/test.txt is a file! its size is: 4

【问题讨论】:

    标签: c++ qt relative-path absolute-path


    【解决方案1】:
    QString QDir::relativeFilePath(const QString & fileName);
    

    应该返回相对文件路径。

    【讨论】:

    • 所以在我的情况下它应该是qDebug() &lt;&lt; QString QDir::relativeFilePath(const QString &amp; info); 对吧?
    • 那么在我的情况下会怎样?我在网上看到了那条确切的线路,但真的无法理解。它不会像我上面建议的那样编译,所以我猜它错了:/
    • QDir infoDir(QDir::currentPath()).relativeFilePath(info.path()); 像这样的东西。 QDir::currentPath() 返回您调用二进制文件的工作目录。所以从那里到 info.path() 的相对路径就是你想要的。
    猜你喜欢
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2018-01-22
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多