query_info


Description:

public abstract FileInfo query_info (string attributes, FileQueryInfoFlags flags, Cancellable? cancellable = null) throws Error

Gets the requested information about specified this.

The result is a [class@Gio.FileInfo] object that contains key-value attributes (such as the type or size of the file).

The attributes value is a string that specifies the file attributes that should be gathered. It is not an error if it’s not possible to read a particular requested attribute from a file — it just won't be set. In particular this means that if a file is inaccessible (due to being in a folder with restrictive permissions), for example, you can expect the returned [class@Gio.FileInfo] to have very few attributes set. You should check whether an attribute is set using [method@Gio.FileInfo.has_attribute] before trying to retrieve its value.

It is guaranteed that if any of the following attributes are listed in attributes, they will always be set in the returned [ class@Gio.FileInfo], even if the user doesn’t have permissions to access the file:

  • [const@Gio.FILE_ATTRIBUTE_STANDARD_NAME]
  • [const@Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME]

attributes should be a comma-separated list of attributes or attribute wildcards. The wildcard `"\*"` means all attributes, and a wildcard like `"standard::*"` means all attributes in the standard namespace. An example attribute query might be `"standard::*,owner: GFile:user"`. The standard attributes are available as defines, like [const@Gio.FILE_ATTRIBUTE_STANDARD_NAME].

If cancellable is not `NULL`, then the operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, the error [error@Gio.IOErrorEnum.CANCELLED] will be returned.

For symlinks, normally the information about the target of the symlink is returned, rather than information about the symlink itself. However if you pass [flags@Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS] in flags the information about the symlink itself will be returned. Also, for symlinks that point to non-existing files the information about the symlink itself will be returned.

If the file does not exist, the [error@Gio.IOErrorEnum.NOT_FOUND] error will be returned. Other errors are possible too, and depend on what kind of file system the file is on.

Example: FileInfo, sync:

public static int main (string[] args) {
if (args.length != 2) {
print ("%s FILE\n", args[0]);
return 0;
}

try {
File file = File.new_for_commandline_arg (args[1]);
FileInfo info = file.query_info ("standard::icon", 0);
Icon icon = info.get_icon ();
print ("%s\n", icon.to_string ());
} catch (Error e) {
print ("Error: %s\n", e.message);
}
return 0;
}

valac --pkg gio-2.0 GLib.File.query_info.vala

Parameters:

this

input file

attributes

an attribute query string

flags

flags to affect the query operation

cancellable

optional cancellable object

Returns:

a [class@Gio.FileInfo] for the given this