我可以想到两种方式:首先,我可以操纵字符串本身;剥去最后一个“/”之前的所有内容。或者,我可以使用URI来获取File对象,然后调用query_info()。get_display_name()。
第一个感觉不正确,而第二个导致创建两个对象。这里遵循的最佳做法是什么?
答案 0 :(得分:4)
第二种方式(使用GLib.File)可能是最强大的,但是......
如果你拥有的只是一个路径,而不是一个URI(例如,/ home / foo / bar而不是file:/// home / foo / bar)你可以使用GLib.Path.get_basename:
GLib.Path.get_basename ("/home/foo/bar");
因为URI中的字符可以被编码(例如,%20而不是空格),如果你真的有一个URI,你可能需要先取消字符串:
GLib.Path.get_basename (GLib.Uri.unescape_string ("file:///home/foo/bar%20baz"));