Задать вопрос

Как правильно написать метод?

Здравствуйте!
Появилась надобность написать метод, который по указанному пути будет удалять из директории один файл. Ниже приведены варианты. Не могу решить, какой из них наиболее подходящий с точки зрения читаемости и производительности.

Method #1
public static void ClearDirectory(string path)
{
    var di = new DirectoryInfo(path);
    foreach (var file in di.GetFiles())
        file.Delete();
}
Method #2
public static void ClearDirectory(string path)
{
    var di = new DirectoryInfo(path);
    di.GetFiles()[0].Delete();
}
Method #3
public static void ClearDirectory(string path)
{
    var di = new DirectoryInfo(path);
    var _file = di.GetFiles()[0];
    _file.Delete();
}
Method #4
public static void ClearDirectory(string path)
{
    new DirectoryInfo(path).GetFiles()[0].Delete();
}

На скриншоте ниже показано среднее время выполнения каждого метода. Как можно заметить - последние два имеют наименьший результат.
5b4f423d2e612167876396.png
Нужен совет. Какой из данных методов предпочтительнее использовать?
  • Вопрос задан
  • 129 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
у вас path содержит имя файла?
или только целевую папку?
если содержит:
File.Delete(path);
если нет, можно и всю папку зачистить
foreach (var f in Directory.EnumerateFiles(path, "*.*"))
   File.Delete(f);

или первый в папке
File.Delete(Directory.EnumerateFiles(path, "*.*")[0]);

а можно и папку грохнуть, со всем содержимым (это как раз одобряется вторым параметром)
Directory.Delete(path, true);
.. а потом пересоздать... ни когда не задумывался - что быстрее в итоге? ))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Smiz001
C#-developer
Вам обязательно нужно опираться на скорость выполнения удаления файла?
И 1й метод самый долгий, т.к. в нем удаляются все файлы в папке,а не только 1 файл.
Ответ написан
Комментировать
ApeCoder
@ApeCoder
Лучше использовать EnumerateFiles, если надо не более одного файла.
Ответ написан
Комментировать
@basrach
Ха!
Методы #2, #3 и #4 абсолютно одинаковые, но результаты в таблице для #2 отличаются от последних в 6 раз.
Это значит, что ваши замеры годятся только чтобы подтереть кое-что.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы