How to delete nonempty remote directories with GIO?

Hi all,

I have created a method for deleting directories in which g_file_measure_disk_usage() (see documentation link) is used at the first place to find out if the directory to be deleted is empty or not. If it is not empty, my program shows a query if the directory should be really deleted. If the user answers “yes”, my code steps through the directory content and removes contained files by calling g_file_delete() for each children item, and finally the directory to be removed is deleted also.

Problem: When being connected to a remote directory, for example via ssh, g_file_measure_disk_usage() returns the following error message:

Operation not supported for the current backend.

Now I am asking myself how to check for remote connections that the directory is empty or not. And furthermore, I wonder how to delete the directory via g_file_delete because in the documentation it is said that

If the file is a directory, it will only be deleted if it is empty.

So I have to check if it is empty before, and if not I have to step through the directory and delete the content before.

How is that possible when I get the mentioned error above, saying that g_file_measure_disk_usage() cannot be used for remote connections?

Obvious solution: always do that. Sounds like you’re already good to go, right? Just remove your call to g_file_measure_disk_usage()? Any problems with that?

1 Like

The best solution is to simply call g_file_delete and ask the user only in case you get G_IO_ERROR_NOT_EMPTY

2 Likes

Thank you both, @mcatanzaro and @oholy! Those are cool ideas, I’ll try to implement one of them in my project.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.