У меня есть список строк, которые являются относительными путями. У меня также есть строка, которая содержит корневой путь для этих файлов. Теперь я удалить их, как это:Самый быстрый способ удалить миллион файлов
foreach (var rawDocumentPath in documents.Select(x => x.RawDocumentPath))
{
if (string.IsNullOrEmpty(rawDocumentPath))
{
continue;
}
string fileName = Path.Combine(storagePath, rawDocumentPath);
File.Delete(fileName);
}
Проблема заключается в том, что я называю Path.Combine
для каждого файла, и это достаточно медленно. Как я могу ускорить этот код? Я не могу удалить целые папки, я не могу изменить текущий каталог (потому что он влияет на целую программу) ...
Мне нужно что-то вроде класса, который может быстро удалять несколько файлов в указанной директории.
не может видеть ничего, что бы замедлить ваш код вниз, узкое место с файловыми операциями в обычных условиях всегда являются операциями ввода/вывода , Вы можете попробовать использовать многопоточность здесь, например. document.AAsParallel(). ForAll() –
@MichaelSander Я знаю, но диск может организовывать удаление в пакетах, вы знаете, очереди команд и так далее. –
Если вы знали, что это «все», то вы могли бы использовать подход типа «.doc», но когда вам нужно делать специфику .. вы более ограничены – BugFinder