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

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

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
Нужен совет. Какой из данных методов предпочтительнее использовать?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 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 раз.
Это значит, что ваши замеры годятся только чтобы подтереть кое-что.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы