Как удалить подкаталоги - PullRequest
1 голос
/ 27 июля 2010

Допустим, есть некоторый путь: C: \ Temp \ TestFolder1 \ TestFolder2

И у меня есть шаблон: C: \ Temp

Итак, я хочу написать функцию, которая удалит все подкаталоги по шаблону

void DeleteSubdirectories(string tlt, string path) {}

Если я вызову эту функцию с заданными параметрами

DeleteSubdirectories("C:\Temp", "C:\Temp\TestFolder1\TestFolder2");

Он должен удалить TestFolder1 \ TestFolder2 подкаталогов из ' C: \ Temp

Как лучше написать эту функцию?

Ответы [ 4 ]

4 голосов
/ 27 июля 2010

Если вы также хотите удалить «C: \ Temp», используйте это:

System.IO.Directory.Delete(@"C:\Temp", true);

Если вы просто хотите удалить подкаталоги, используйте это:

foreach (var subDir in new DirectoryInfo(@"C:\Temp").GetDirectories()) {
    subDir.Delete(true);
}
2 голосов
/ 27 июля 2010

Просто используйте Directory.Delete - связанная с перегрузкой I имеет логическое значение, которое указывает, следует ли удалять подкаталоги.

2 голосов
/ 27 июля 2010
System.IO.Directory.Delete("Path", true);
0 голосов
/ 27 июля 2010

То, что вы описываете, звучит странно, но попробуйте это:

using System;
using System.IO;

static void DeleteSubDirectories(string rootDir, string childPath)
{
    string fullPath = Path.Combine(rootDir, childPath);

    Directory.Delete(fullPath);

    string nextPath = Path.GetDirectoryName(fullPath);

    while (nextPath != rootDir)
    {
        Directory.Delete(nextPath);
        nextPath = Path.GetDirectoryName(nextPath);
    }
}

Используйте это как:

DeleteSubdirectories("C:\Temp", "TestFolder1\TestFolder2");

Очевидно, вам придется реализовать обработку исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...