2 つの方法が考えられます。1 つ目は、文字列自体を操作する方法です。最後の "/" より前のすべてを取り除きます。または、URI を使用して File オブジェクトを取得してから、query_info().get_display_name() を呼び出すこともできます。
1 つ目は正しくないように感じますが、2 つ目は 2 つのオブジェクトが作成されます。ここに従うべきベストプラクティスは何ですか?
2番目の方法(GLib.Fileを使用)はおそらく最も堅牢ですが...
持っているものが実際にはパスであり、URIではない場合(たとえば、file:/// home / foo/barではなく/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"));