我需要使用glib检查两个文件路径的等价性。我很久以前通过减少路径用Qt做过。但我无法在glib中找到类似的乐器。 有人可以建议这样做的常用方法吗?
由于
答案 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
。
所以,你可以采取两步法:
g_file_equal()
。如果它显示true
,那么就完成了。G_FILE_ATTRIBUTE_ID_FILE
属性并进行比较。