Предположим, я хотел перечислить файлы каталога & итеративно таким образом, чтобы сначала выдавались внутренние каталоги и файлы.Перечисление каталогов итеративно в «почтовом ящике»
Если вы должны были выполнить это перечисление в цикле foreach с функциями: DeleteFile и DeleteEmptyDirectory, это не должно терпеть неудачу, потому что первые внутренние элементы выдаются.
Теперь, конечно, можно было бы сделать это (псевдокод):
func(Directory dir)
foreach (var f in dir.EnumerateFileSystemInfos())
if (f is FileInfo)
yield return f;
else
foreach (var item in func(f))
yield return item;
yield return dir;
Но есть много отходов ассигнований на счетчиками.
Можно также использовать два стека и «собрать» все каталоги вместе, а затем просто вытаскивать элементы, но это слишком много памяти и не сбалансирует время MoveNext.
Любые идеи о том, как это сделать эффективно, не тратя слишком много места?
Этот код не делает не идти через файлы в подкаталогах. Вы не хотите просматривать файлы в подкаталогах? –
@Yacoub Massad Я бы сказал «нет», он указывает «итеративно» –
Извините, я хочу просматривать файлы в подкаталогах, я должен удалить этот фрагмент кода, не пытаюсь переходить через него рекурсивно, потому что я создаю state machine, это был псевдокод более или менее, но да, это было неправильно – hl3mukkel