0

我需要使用 glib 检查两个文件路径的等效性。很久以前,我通过缩减路径使用 Qt 做到了这一点。但我在 glib 中找不到类似的工具。有人可以建议这样做的常用方法吗?

谢谢

4

1 回答 1

1

对于解决.and使用的“简单”规范化,只需使用GIO API 的函数..创建两个GFile对象。然后使用 . 比较两个文件。g_file_new_for_path()g_file_equal()

请注意,这依赖于 GIO 在您创建GFile对象时对路径进行简单的规范化;它不会解析符号链接。该文档指出:

使用GFile作为标识符与使用路径具有相同的弱点,因为同一文件可能有多个别名。例如,硬链接或软链接可能会导致两个不同GFile的 s 引用同一个文件。别名的其他可能原因是:不区分大小写的文件系统、FAT/NTFS 上的短名称和长名称,或 Linux 中的绑定挂载。如果要检查两个GFiles 是否指向同一个文件,可以查询G_FILE_ATTRIBUTE_ID_FILE属性。请注意,GFile对传入的路径名进行了一些微不足道的规范化,因此在创建时使用的路径字符串中的微不足道的差异(重复的斜杠、路径末尾的斜杠、“.”或“..”路径段等)不会创建不同GFile的 s .

所以,你可以做一个两步的方法:

  1. 检查与g_file_equal()。如果它说true,你就完成了。
  2. 否则查询G_FILE_ATTRIBUTE_ID_FILE属性并比较它们。
于 2013-08-21T09:54:29.667 回答