使用 Qt 重命名符号链接

Posted

技术标签:

【中文标题】使用 Qt 重命名符号链接【英文标题】:Rename a symlink with Qt 【发布时间】:2015-08-21 15:05:30 【问题描述】:

我使用QFile::link()function 创建了一个符号链接,它工作正常,但在路上,我想重命名链接。目标保持不变,只是链接名称发生了变化。有没有办法做到这一点?

我对 linux(符号链接)和 windows(快捷方式)解决方案都感兴趣。

【问题讨论】:

【参考方案1】:

创建链接后,试试这个

QFile linkFile("/path/to/the/file/link_filename"); // remember, windows needs .lnk extension
if (linkFile.exists()) 
   linkFile.rename("/path/to/the/file/new_linkfilename");

在带有 Qt 5.5 的 Ubuntu 14.04 上对此进行了测试

【讨论】:

我正在 windows 上开发并尝试过这个,但不适用于 Qt 5.4 的 windows 我没有显示任何错误,但没有重命名,但第一个问题是Qfile::exists(),在符号链接的情况下检查目标文件仅返回真或假。我发现它可以与QFileInfo::isSymlink() 配对,但最终结果证明我需要删除符号链接,而且效果很好。

以上是关于使用 Qt 重命名符号链接的主要内容,如果未能解决你的问题,请参考以下文章

重命名文件而不使用 renameTo() - Java

Qt5,到文件夹的符号链接

如何使用 .Net 获取符号链接(或重解析点)的目标?

Linux系统管理_主题02 :管好文件_2.4 链接文件_ln

命名空间中的内联函数在 gcc 上的链接期间生成重复的符号

由于符号与 abi::cxx11 的链接问题?