2010-09-23 8 views
1

Quel est le moyen le plus rapide d'obtenir une longueur de fichier dans .net?Quel est le moyen le plus rapide d'obtenir une longueur de fichier dans .net?

Remarque: J'accède aux fichiers via un partage réseau.

Jusqu'à présent, je

ont
  • 1.5ms FileInfo.Length
  • .5ms FileStream(). Longueur
+2

Par curiosité, ce qui ne va pas avec FileInfo? –

+3

Oui, si vous expliquez pourquoi vous ne pouvez pas utiliser FileInfo, les gens sont plus susceptibles de donner la réponse que vous recherchez – Luxspes

+0

@Scott @Luxspes J'ai reformulé la question pour représenter ma véritable intention. – Simon

Répondre

1

dérivé de Adi_aks répondre

public static long GetFileLength(string path) 
{ 
    using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) 
    { 
     return fileStream.Length; 
    } 
} 
+3

Pourquoi le vote négatif? – Simon

+0

J'ai ajouté un 'Catch ex As Exception Return -1 End End End Function '(oups ... mon VB montre ..) à un code que j'utilise pour faire une queue avec. Fonctionne comme un charme, et semble plus léger que d'utiliser un objet FileInfo. – edhubbell

0

Pourquoi ne pas utiliser FileInfo.Length?

Vous pouvez appeler l'API Win32: CreateFile, GetFileSizeEx et CloseHandle si vous le souhaitez vraiment.

+0

J'ai reformulé la question pour représenter ma véritable intention. – Simon

2
long size = File.OpenRead(path).Length; 
+0

Server.MapPath() ne s'appliquerait que dans ASP.NET, et je ne suis pas sûr que le moyen le plus rapide pour trouver une taille de fichier impliquerait l'ouverture inutilement d'un flux (qui, incidemment, n'est pas fermé par ce code, –

+0

mieux encore à faire en utilisant (var fileStream = nouveau FileStream (chemin d'accès, FileMode.Open, FileAccess.Read, FileShare.Read)) { \t var length = fileStream.Length; } – Simon

1

Vous pouvez Pinvoke le FindFirstFile ou GetFileAttributesEx appels API, mais qui semble comme beaucoup de travail supplémentaire que la classe FileInfo est déjà fait pour vous. Sinon, je me demande ce que Scott est: pourquoi ne pas utiliser FileInfo?

Questions connexes