web-dev-qa-db-fra.com

Directory vs DirectoryInfo

Sont-ils équivalents ou alternatifs? L'un d'eux est-il obsolète et si oui, lequel? Lequel est recommandé pour une utilisation dans une application Web ASP.NET. Mon objectif est d'extraire tous les fichiers d'un répertoire spécifique de manière récursive.

39
Afshar Mohebbi

Directory est une classe statique qui fournit des méthodes statiques pour travailler avec des répertoires. DirectoryInfo est une instance d'une classe qui fournit des informations sur un répertoire spécifique. Ainsi, par exemple, si vous vouliez des informations sur C:\Temp:

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

Si vous vouliez simplement les noms sous forme de chaînes, il pourrait être plus rapide et plus facile d'éviter de créer une instance de DirectoryInfo en utilisant les méthodes statiques de Directory.

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

En bref, peu importe ce que vous utilisez tant qu'il fait ce que vous voulez. Aucun des deux n'est recommandé par rapport à l'autre.

49
Josh

Directory classe est une classe statique qui peut être utilisée pour créer, déplacer, énumérer des répertoires et sous-répertoires. La classe DirectoryInfo est également utilisée dans le même but que la classe Directory où ses membres sont des membres d'instance par opposition à la classe Directory. La principale différence entre les deux réside dans le moment où nous pouvons utiliser ces classes. La classe Directory peut être utilisée lorsque nous voulons une opération de dossier simple à la fois. Par exemple, vous devez supprimer le dossier et vous en sortir. Mais, la classe DirectoryInfo est associée à un dossier et vous fournit toutes les opérations qui peuvent être effectuées sur le dossier. La classe DirectoryInfo accepte un chemin comme paramètre lors de l'instanciation et vous fournit tout sur le dossier. Vous pouvez créer des sous-répertoires, déplacer, énumérer etc. CODEDIGEST

Une note importante également si vous devez effectuer plusieurs actions sur l'annuaire DirectoryInfo aura un avantage en termes de performances car il ne nécessitera pas de vérification des privilèges de sécurité pour chaque action.

7
Incognito

Annuaire

  1. Le répertoire est une classe statique.
  2. Cela doit être utilisé lorsque nous voulons effectuer une opération dans le dossier.
  3. Comme il n'y a aucune obligation de créer un objet pour la classe Directory, donc pas de surcharge pour l'utiliser.

Classe d'informations d'annuaire

  1. DirectoryInfo n'est pas une classe statique.
  2. Si l'utilisateur doit effectuer de nombreuses opérations sur un répertoire comme la création, la suppression, la liste des fichiers, etc., la classe DirectoryInfo doit être utilisée.
  3. Un objet distinct est créé pour effectuer toutes les opérations liées au répertoire.
  4. C'est efficace si vous allez effectuer de nombreuses opérations sur le dossier car, une fois l'objet créé, il dispose de toutes les informations nécessaires sur le dossier telles que son heure de création, son dernier accès et ses attributs. Tous les membres de la classe DirectoryInfo sont des membres d'instance.
2
Chuckie

DirectoryInfo est (essentiellement) la classe Directory mais est utilisé dans un contexte non statique. Si vous allez effectuer de nombreux appels au FileSystem, en particulier lorsqu'il s'agit du même dossier ou dans le sous-répertoire dudit dossier, MSDN suggère d'utiliser DirectoryInfo.

1
Meiscooldude

DirectoryInfo a un méthode DirectoryInfo.GetFiles qui répond probablement à vos besoins.

1
Jakob Gade