Je lis que les méthodes statiques de la Fichier Les classes sont mieux utilisées pour effectuer de petites tâches et peu de tâches sur un fichier. FileInfo Classe si nous allons effectuer de nombreuses opérations sur un fichier spécifique.
Je comprends cela et je peux simplement l'utiliser aveuglément, mais j'aimerais savoir pourquoi il y a une différence? Qu'est-ce qui rend leur travail adapté à différentes situations? Quel est l'intérêt d'avoir ces 2 classes différentes qui semblent faire la même chose de manière différente?
Il serait utile que quelqu'un puisse répondre à au moins une de ces questions.
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
.
Cela s'explique par la vérification de la 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
, le contrôle est effectué.
"Les méthodes des classes File et FileInfo sont similaires, mais elles diffèrent par le fait que les méthodes de la classe File sont static. Vous devez donc passer plus de paramètres que pour les méthodes de l'occurrence FileInfo. pour ce faire, car elle fonctionne sur un fichier spécifique, par exemple, la méthode FileInfo.CopyTo () prend un paramètre pour le chemin de destination utilisé pour copier le fichier, alors que la méthode File.Copy () prend deux paramètres pour le chemin 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
File.Exists fonctionnera beaucoup plus rapidement qu'un nouveau FileInfo (filePath) .Exists - en particulier sur un réseau et à condition que les fichiers existent réellement. En effet, File.Exists vérifie uniquement l'existence du fichier, alors qu'un nouveau FileInfo (filePath) .Exists construit d'abord un objet FileInfo, qui contient toutes les propriétés (dates, taille, etc.) du fichier (s'il existe).
D'après mon expérience, même vérifier l'existence de 10 fichiers sur le réseau est nettement plus rapide (c'est-à-dire 20 ms par rapport à 200 ms) grâce à File.Exists.
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.
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 convient.
Oui, et l'une des raisons pourrait être, comme l'a dit Nag, que Files soit une classe d'utilitaires et qu'aucune instance ne doit être créée. En même temps, en tant que fichier utilitaire, la vérification de la sécurité est requise à chaque fois.
D'autre part, FileInfo nécessite la création d'une instance et ce point utilise un contrôle de sécurité. Ainsi, l'exécution de plusieurs opérations à l'aide de FileInfo n'appelle pas de contrôle de sécurité.
FileInfo est une instance d'un fichier représentant ainsi le fichier lui-même. Le fichier est une classe utilitaire, donc peut fonctionner avec n'importe quel fichier
Récemment, j'ai eu un problème avec File.Exist
, je déteste cette fonction. Après que j’ai utilisé la fonction Fileinfo
class Exist
, mon programme fonctionne correctement.
En réalité, ce qui se passe dans l'environnement de développement File.Exist
fonctionne bien, mais lorsqu'il passe en environnement réel, cette fonction bloque l'objet fichier pour cette raison, l'accès à l'erreur est refusé et je ne peux pas utiliser le fichier.
C’est mon apprentissage… .. Je n’utiliserai jamais la méthode File.Exist
, le mieux serait de créer l’objet puis de l’utiliser. Soyez conscient d'utiliser des méthodes statiques.
FileInfo:
Fichier:
src: