76 votes

Quelle est la différence entre File et FileInfo en C #?

J'ai lu que les méthodes statiques de la Fichier de Classe sont mieux utilisés pour effectuer des petites et quelques tâches sur un fichier comme la vérification pour voir si il existe et que l'on doit utiliser une instance de la FileInfo Classe si nous allons effectuer de nombreuses opérations sur un fichier spécifique.

Je comprends cela et pouvez tout simplement utiliser de cette façon à l'aveuglette, mais je voudrais savoir pourquoi il y a une différence ? Qu'est-ce au sujet de la façon de travailler qui, adaptées à des situations différentes ? Quel est l'intérêt d'avoir ces 2 classes différentes qui semblent faire la même chose de différentes façons ?

Il serait utile si quelqu'un pouvait répondre à au moins une de ces questions.

91voto

John Rasch Points 28874

Généralement, si vous effectuez une seule opération sur un fichier, utilisez la classe File . Si vous effectuez plusieurs opérations sur le même fichier, utilisez FileInfo .

La raison de le faire de cette façon est due à la vérification de sécurité effectuée lors de l'accès à un fichier. Lorsque vous créez une instance de FileInfo , la vérification est effectuée une seule fois. Cependant, chaque fois que vous utilisez une méthode statique File , la vérification est effectuée.

5voto

madcolor Points 4077

"Les méthodes du Fichier et FileInfo classes sont similaires, mais ils diffèrent en ce que les méthodes de la classe File sont statiques, alors vous devez passer plus de paramètres que vous le feriez pour les méthodes de l'instance FileInfo. Vous avez besoin de le faire, car il fonctionne sur un fichier spécifique; par exemple, la FileInfo.CopyTo() la méthode prend un paramètre pour le chemin de destination qui est utilisé pour copier le fichier, tandis que la Fichier.Copier() la méthode prend deux paramètres pour le chemin d'accès source et le chemin de destination."

http://www.aspfree.com/c/a/C-Sharp/A-Look-at-C-Sharp-File-and-FileInfo-Classes/1/

http://www.intelliott.com/blog/PermaLink,guid,ce9edbdb-6484-47cd-a5d6-63335adae02b.aspx

4voto

Nick Wallace Points 89

Le Fichier.Existe effectue beaucoup plus rapidement qu'un nouveau FileInfo(filePath).Existe - surtout sur un réseau et à condition que les fichiers existent réellement. C'est parce que la Fichier.Existe uniquement à vérifier l'existence du fichier, tandis qu'un nouveau FileInfo(filePath).Il existe d'abord construit un objet FileInfo, qui contient toutes les propriétés (dates, taille, etc) du fichier (s'il existe).

Dans mon expérience avec ce, même de vérifier l'existence de 10 fichiers sur le réseau est sensiblement plus rapide (c'est à dire 20ms vs 200ms) à l'aide de Fichier.Existe.

3voto

Franci Penov Points 45358

Le fichier est optimisé pour des opérations uniques sur un fichier, FileInfo est optimisé autour de plusieurs opérations sur le même fichier, mais en général, il n'y a pas beaucoup de différence entre les différentes implémentations de méthodes.

Si vous souhaitez comparer les implémentations exactes, utilisez Reflector pour examiner les deux classes.

3voto

Henk Holterman Points 153608

Un FileInfo peut être nécessaire pour gérer les propriétés de contrôle d'accès. Pour le reste, il s'agit d'un choix entre Statique et Instance et vous pouvez choisir ce qui vous convient.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X