按照符号链接获取QFileInfo的绝对路径

时间:2013-04-30 07:16:29

标签: c++ qt

我用C ++和Qt编码。

我想按照符号链接获取QFileInfo的绝对路径。

例如,/usr/local/extra/home/extra的符号链接。 然后我需要将/usr/local/extra/my_directory/转换为/home/extra/my_directory

我尝试QFileInfo(path).canonicalPath()但它只返回父目录。

3 个答案:

答案 0 :(得分:1)

使用QFileInfo :: canonicalFilePath()代替。 canonicalPath()总是返回父目录,而canonicalFilePath()实际上包含文件(或目录)本身。

答案 1 :(得分:0)

在我提出问题之后,我想我找到了解决方案。 我应该使用QDir(path).canonicalPath()代替QFileInfo(path).canonicalPath()

  

QString QDir :: canonicalPath()const返回规范路径,即   没有符号链接或冗余“。”的路径。或“......”元素。上   没有符号链接的系统将始终使用此功能   返回absolutePath()返回的相同字符串。如果规范   路径不存在(通常由于悬挂的符号链接)   canonicalPath()返回一个空字符串。例如:

 // where /local/bin is a symlink to /usr/bin
 QString bin = "/local/bin";
 QDir binDir(bin);
 QString canonicalBin = binDir.canonicalPath();
 // canonicalBin now equals "/usr/bin"

 QString ls = "/local/bin/ls";       // where ls is the executable "ls"
 QDir lsDir(ls);
 QString canonicalLs = lsDir.canonicalPath();
 // canonicalLS now equals "/usr/bin/ls".

答案 2 :(得分:0)

QFileInfo::symLinkTarget()怎么样?

  

QString QFileInfo :: symLinkTarget()const返回到的绝对路径   符号链接(或Windows上的快捷方式)指向的文件或目录,或   如果对象不是符号链接,则为空字符串。这个名字可能   不代表现有文件;它只是一个字符串。   如果符号链接指向现有文件,则QFileInfo :: exists()返回true   文件。此功能在Qt 4.2中引入。另请参见exist(),   isSymLink(),isDir()和isFile()。