[ CCode ( vfunc_name = "delete_file" ) ]
public abstract bool @delete (Cancellable? cancellable = null) throws Error

Deletes a file.

If the this is a directory, it will only be deleted if it is empty. This has the same semantics as unlink.

If this doesn’t exist, g_io_error_not_found will be returned. This allows for deletion to be implemented avoiding time-of-check to time-of-use races:

g_autoptr(GError) local_error = NULL;
if (!g_file_delete (my_file, my_cancellable, &local_error) &&
!g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
// deletion failed for some reason other than the file not existing:
// so report the error
g_warning ("Failed to delete %s: %s",
g_file_peek_path (my_file), local_error->message);

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.

Example: Delete a file, sync:

public static int main (string[] args) {
// Delete my-test.txt:
File file = File.new_for_path ("my-test.txt");
try {
file.delete ();
} catch (Error e) {
print ("Error: %s\n", e.message);

return 0;

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



input File


optional Cancellable object, null to ignore


true if the file was deleted. false otherwise.