Удалить папку, если только текстовый файл
Я использовал это для удаления пустых папок, и это идеально подходит для моих нужд. Мне нужно добавить одно условие, чтобы по-прежнему удалять папку, если она содержит только один файл.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 измененный вопрос, чтобы указать один файл. Ответ изменен, чтобы соответствовать.