enumerate_children


Description:

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 [class@FileEnumerator] object that will give out [class@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 [const@FILE_ATTRIBUTE_STANDARD_NAME]. [const@FILE_ATTRIBUTE_STANDARD_NAME] should always be specified if you plan to call [ method@FileEnumerator.get_child] or [method@FileEnumerator.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 [error@Gio.IOErrorEnum.CANCELLED] will be returned.

If the file does not exist, the [error@Gio.IOErrorEnum.NOT_FOUND] error will be returned. If the file is not a directory, the [ error@Gio.IOErrorEnum.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 [method@GObject.Object.unref].