2009-10-21

Kasowanie całego katalogu

Prosta funkcja kasująca cały katalog wraz z plikami i podkatalogami. Standardowa procedura kasowania katalogu wymaga by całe poddrzewo katalogów nie zawierało plików. Jak zawsze przy korzystaniu z takich funkcji trzeba uważać bo można sobie zrobić kuku. Funkcja ta nie stara się w żaden sposób przejąć prawa do tego do czego nie ma prawa (tzn. zmiana uprawnień plików, zmiana atrybutu read-only). Jak coś się nie uda to będzie wyjątek. A oto kasująca wszystko metoda rozszerzona:
public static class DirectoryInfoExtensions
{
    public static void DeleteAll(this DirectoryInfo a_dir_info)
    {
        if (!a_dir_info.Exists)
            return;

        foreach (FileInfo file_info in a_dir_info.GetFiles())
            file_info.Delete();

        foreach (DirectoryInfo dir_info in a_dir_info.GetDirectories())
            dir_info.DeleteAll();

        a_dir_info.Delete(false);
    }
}