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

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 (

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



input File


an attribute query string


a set of FileQueryInfoFlags


optional Cancellable object, null to ignore


A FileEnumerator if successful, null on error. Free the returned object with unref.