enumerate_children
Description:
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
Parameters:
this |
input File |
attributes |
an attribute query string |
flags |
a set of FileQueryInfoFlags |
cancellable |
optional Cancellable object, null to ignore |
Returns:
A FileEnumerator if successful, null on error. Free the returned object with unref. |