使用glib检查路径等效性

时间:2013-08-21 09:31:09

标签: c string path filepath glib

我需要使用glib检查两个文件路径的等价性。我很久以前通过减少路径用Qt做过。但我无法在glib中找到类似的乐器。 有人可以建议这样做的常用方法吗?

由于

1 个答案:

答案 0 :(得分:1)

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

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

  

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

所以,你可以采取两步法:

  1. 查看g_file_equal()。如果它显示true,那么就完成了。
  2. 否则查询G_FILE_ATTRIBUTE_ID_FILE属性并进行比较。