Удалить папку, если только текстовый файл

Я использовал это для удаления пустых папок, и это идеально подходит для моих нужд. Мне нужно добавить одно условие, чтобы по-прежнему удалять папку, если она содержит только один файл.txt. Как мне изменить этот синтаксис, чтобы удалить каталог, если он содержит только файл.txt?

static void Main(string[] args)
{
    string path = @"C:\Test\";
}
public static void processDirectory(string startLocation)
{
    foreach (var directory in Directory.GetDirectories(startLocation))
    {
        processDirectory(directory);
        if (Directory.GetFiles(directory).Length == 0 && Directory.GetDirectories(directory).Length == 0)
        {
            Directory.Delete(directory, false);
        }
    }           
}

РЕДАКТИРОВАТЬ

Это приводит к синтаксической ошибке, но я думаю, что это то, что я пытался сделать

if (Directory.GetFiles(Path.GetExtension) == ".txt")

1 ответ

Решение

Что-то вроде этого?

public static void processDirectory(string startLocation)
{
    foreach (var directory in Directory.GetDirectories(startLocation))
    {
        processDirectory(directory);
        var aFiles = Directory.GetFiles(directory);
        var noFiles = aFiles.Length == 0 || (aFiles.Length == 1 && aFiles.Count(file => Path.GetExtension(file) == ".txt") == 1);
        if (noFiles && Directory.GetDirectories(directory).Length == 0)
        {
            Directory.Delete(directory, true);
        }
    }           
}

ОБНОВЛЕНИЕ: OP измененный вопрос, чтобы указать один файл. Ответ изменен, чтобы соответствовать.

Другие вопросы по тегам