FileInfo


Object Hierarchy:

Object hierarchy for FileInfo

Description:

public class FileInfo : Object

Functionality for manipulating basic metadata for files.

FileInfo implements methods for getting information that all files should contain, and allows for manipulation of extended attributes.

See GFileAttribute for more information on how GIO handles file attributes.

To obtain a FileInfo for a File, use query_info (or its async variant). To obtain a FileInfo for a file input or output stream, use query_info or query_info (or their async variants).

To change the actual attributes of a file, you should then set the attribute in the FileInfo and call set_attributes_from_info or set_attributes_async on a GFile.

However, not all attributes can be changed in the file. For instance, the actual size of a file cannot be changed via set_size. You may call query_settable_attributes and query_writable_namespaces to discover the settable attributes of a particular file at runtime.

FileAttributeMatcher allows for searching through a FileInfo for attributes.

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

Example: List all files in a directory, async:

public static int main (string[] args) {
File file = File.new_for_path (".");
MainLoop loop = new MainLoop ();

file.enumerate_children_async.begin ("standard::*", FileQueryInfoFlags.NOFOLLOW_SYMLINKS, Priority.DEFAULT, null, (obj, res) => {
try {
FileEnumerator enumerator = file.enumerate_children_async.end (res);
FileInfo info;
while ((info = enumerator.next_file (null)) != null) {
print ("%s\n", info.get_name ());
print ("\t%s\n", info.get_file_type ().to_string ());
print ("\t%s\n", info.get_is_symlink ().to_string ());
print ("\t%s\n", info.get_is_hidden ().to_string ());
print ("\t%s\n", info.get_is_backup ().to_string ());
print ("\t%"+int64.FORMAT+"\n", info.get_size ());
}
} catch (Error e) {
print ("Error: %s\n", e.message);
}

loop.quit ();
});

loop.run ();
return 0;
}

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


Namespace: GLib
Package: gio-2.0

Content:

Creation methods:

Methods:

Inherited Members: