C удалить все файлы в папке
Появилась надобность написать метод, который по указанному пути будет удалять из директории один файл. Ниже приведены варианты. Не могу решить, какой из них наиболее подходящий с точки зрения читаемости и производительности.
На скриншоте ниже показано среднее время выполнения каждого метода. Как можно заметить - последние два имеют наименьший результат.
Нужен совет. Какой из данных методов предпочтительнее использовать?
Или я туплю, но только 1 метод удаляет все файлы, остальные удаляют только первый файл из всех. в 1м методе удаляются все файлы, а в остальных только первый Первый метод - удаление всего в директории, все остальные делают все тоже самое, разница только в том, что где то вы сгруппировали различные методы в одну "портянку", а где то наоборот, разбили все по своим переменным. Тут вы экономите совершенно не на том. Что касается самого задания, то на кой черт вам перебор не пойму, если файл 1? Вызывайте просто File.Delete("C:\\MyFile.txt"); и будет вам счастье. @EvgeniyZ имхо это можно ответом постить, я бы плюсанул @EvgeniyZ И я плюсану, пишите. Ответ полностью на все поставленные вопросы дан: экономия на спичках, разницы толком нет, удаляется разное, непонятно зачем цикл.Давайте разберем ваши методы:
Первый метод - Здесь вы при вызове задаете ему некий путь к директории, потом получаете всю информацию о ней (и о каждом файле) и затем уже в цикле пробегаете по всем файлам в данной директории, удаляя каждый. По сути вам не нужно знать всю информацию о директории, а значит можно от DirectoryInfo отказаться и использовать просто пути до файлов, метод в итоге будет такой:
Другие методы - Вы также при вызове задаете некий путь, получаете всю информацию о данной директории и после этого удаляете первый файл в данной директории. Все методы у вас одинаковы, разница только в том, что во втором методе вы вынесли отдельно в переменную di информацию о текущей директории; в третьем методе вы еще дополнительно вынесли информацию о файле в переменную _file ; ну а в четвертом вы вовсе все написали сплошной "портянкой". Я вам больше даже скажу, все эти методы у вас имеют серьезную ошибку (попробуйте указать путь к пустой директории).
Читаемость кода - Тут тоже, у каждого свое представление, свой стиль, я к примеру люблю минимализм, если это хорошо читается и возможно разместить в одну строку, то почему бы и нет. Пример переписанного первого метода в одну строку, (как с читаемостью?):
Правильное решение - Вы пишите:
написать метод, который по указанному пути будет удалять из директории один файл.
Читайте также: