Справочник против Справочника - PullRequest
39 голосов
/ 30 июня 2010

Они эквивалентны или альтернативы друг другу? Любой из них устарел, и если да, то какой? Какой из них рекомендуется для использования в веб-приложении ASP.NET. Моя цель - рекурсивно извлечь все файлы из определенного каталога.

Ответы [ 5 ]

48 голосов
/ 30 июня 2010

Directory - это статический класс, который предоставляет статические методы для работы с каталогами. DirectoryInfo - это экземпляр класса, который предоставляет информацию о конкретном каталоге.Так, например, если вам нужна информация о C: \ Temp:

var dirInfo = new DirectoryInfo("C:\\Temp");
if (dirInfo.Exists) {
    FileInfo[] files = dirInfo.GetFiles("*.*", SearchOption.AllDirectories);
    ...
}

Если вы просто хотите, чтобы имена были в виде строк, было бы быстрее и проще избежать создания экземпляра DirectoryInfo с помощью статических методовСправочник.

if (Directory.Exists("C:\\Temp")) {
    string[] files = Directory.GetFiles("C:\\Temp", "*.*", SearchOption.AllDirectories);
    ...
}

Короче говоря, действительно не имеет значения, какой вы используете, пока он делает то, что вы хотите.Ни один не рекомендуется по сравнению с другим.

7 голосов
/ 30 июня 2010

Directory класс является статическим класс, который можно использовать для создания, перемещать, перечислять каталоги и суб каталоги. DirectoryInfo класс также подается для того же цель как Directory класс, где его члены являются членами экземпляра как в отличие от Directory класса. Главный Разница между двумя заключается в когда мы можем использовать эти классы. Directory класс может быть использован, когда мы хочу простую операцию с папкой в один раз. Например, вам нужно удалить папку и уйти. Но DirectoryInfo класс связан с папкой и предоставляет вам все операции, которые можно сделать на папка. DirectoryInfo класс принимает путь в качестве параметра, когда инстанцирование и предоставляет вам все в папке. Вы можете создавать подкаталоги, перемещать, перечислять и т. д. CODEDIGEST

Также важное замечание, если вам нужно выполнить несколько действий с каталогом DirectoryInfo, будет иметь преимущество в производительности, поскольку не потребует проверки привилегий безопасности для каждого действия.

2 голосов
/ 02 июля 2010

Каталог

  1. Каталог является статическим классом.
  2. Это следует использовать, когда мы хотим выполнить одну операцию в папке.
  3. As Нет никаких требований к созданию объекта для класса Directory, поэтому нет никаких накладных расходов для его использования.

Справочник Info Class

  1. DirectoryInfo не является статическим классом.
  2. Если пользователю требуется выполнить много операций над одним каталогом, таких как создание, удаление, просмотр файла и т. Д., Следует использовать класс DirectoryInfo.
  3. Для выполнения всех операций, связанных с каталогом, создается отдельный объект.
  4. Это эффективно, если вы собираетесь выполнять много операций с папкой, потому что, как только объект создан, он имеет всю необходимую информацию о папке, такую ​​как время создания, время последнего доступа и атрибуты. Все члены класса DirectoryInfo являются членами экземпляра.
1 голос
/ 30 июня 2010

В DirectoryInfo есть метод DirectoryInfo.GetFiles , который, вероятно, соответствует вашим требованиям.

1 голос
/ 30 июня 2010

DirectoryInfo (в основном) класс Directory, но используется в нестатическом контексте.Если вы собираетесь совершать много вызовов FileSystem, особенно если она находится в той же папке или в подкаталоге указанной папки, MSDN предлагает использовать DirectoryInfo.

...