[ CCode ( vfunc_name = "monitor_dir" ) ]
public abstract FileMonitor monitor_directory (FileMonitorFlags flags, Cancellable? cancellable = null) throws IOError

Obtains a directory monitor for the given file.

This may fail if directory monitoring is not supported.

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.

It does not make sense for flags to contain g_file_monitor_watch_hard_links, since hard links can not be made to directories. It is not possible to monitor all the files in a directory for changes made via hard links; if you want to do this then you must register individual watches with monitor.

Example: Directory monitoring:

public static int main () {
try {
File file = File.new_for_path (Environment.get_home_dir ());
FileMonitor monitor = file.monitor_directory (FileMonitorFlags.NONE, null);
print ("Monitoring: %s\n", file.get_path ());

monitor.changed.connect ((src, dest, event) => {
if (dest != null) {
print ("%s: %s, %s\n", event.to_string (), src.get_path (), dest.get_path ());
} else {
print ("%s: %s\n", event.to_string (), src.get_path ());

new MainLoop ().run ();
} catch (Error err) {
print ("Error: %s\n", err.message);
return 0;

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



input File


a set of FileMonitorFlags


optional Cancellable object, null to ignore


a FileMonitor for the given this, or null on error. Free the returned object with unref.