Gets the requested information about the files in a directory.
The result is a FileEnumerator object that will give out FileInfo objects for all the files in the directory.
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. 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 be "standard::*,owner:GFile:user
". The standard attributes are
available as defines, like g_file_attribute_standard_name.
g_file_attribute_standard_name should always be specified if you plan to call
get_child or
iterate on the returned enumerator.
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 g_io_error_cancelled
will be returned.
If the file does not exist, the g_io_error_not_found error will be returned. If the file is not a directory, the g_io_error_not_directory error will be returned. Other errors are possible too.
Example: List all files in a directory, sync:
private void list_children (File file, string space = "", Cancellable? cancellable = null) throws Error {
FileEnumerator enumerator = file.enumerate_children (
"standard::*",
FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
cancellable);
FileInfo info = null;
while (cancellable.is_cancelled () == false && ((info = enumerator.next_file (cancellable)) != null)) {
if (info.get_file_type () == FileType.DIRECTORY) {
File subdir = file.resolve_relative_path (info.get_name ());
list_children (subdir, space + " ", cancellable);
} else {
print ("%s%s\n", space, info.get_name ());
print ("%s %s\n", space, info.get_file_type ().to_string ());
print ("%s %s\n", space, info.get_is_symlink ().to_string ());
print ("%s %s\n", space, info.get_is_hidden ().to_string ());
print ("%s %s\n", space, info.get_is_backup ().to_string ());
print ("%s %"+int64.FORMAT+"\n", space, info.get_size ());
}
}
if (cancellable.is_cancelled ()) {
throw new IOError.CANCELLED ("Operation was cancelled");
}
}
public static int main (string[] args) {
if (args.length != 2) {
print ("%s [DIRECTORY]\n", args[0]);
return 0;
}
File file = File.new_for_commandline_arg (args[1]);
try {
list_children (file, "", new Cancellable ());
} catch (Error e) {
print ("Error: %s\n", e.message);
return 0;
}
return 0;
}
valac --pkg gio-2.0 GLib.File.enumerate_children.vala
this |
input File |
attributes |
an attribute query string |
flags |
a set of FileQueryInfoFlags |
cancellable |
optional Cancellable object, null to ignore |
A FileEnumerator if successful, null on error. Free the returned object with unref. |