Comment obtenez-vous la taille du fichier en C #?


307

J'ai besoin d'un moyen d'obtenir la taille d'un fichier en utilisant C #, et non la taille sur le disque. Comment est-ce possible?

Actuellement, j'ai cette boucle

foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
    //file.Length (will this work)
}

Est-ce que cela retournera la taille ou la taille sur le disque?


Réponses:



386

Si vous avez déjà un chemin de fichier en entrée, voici le code dont vous avez besoin:

long length = new System.IO.FileInfo(path).Length;

1
Entourez-le de bloc try / catch et vérifiez toutes les exceptions possibles comme décrit ici : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException et - selon votre cas d'utilisation - ArgumentNullException et ArgumentException
huha

37

FileInfo.Lengthfera l'affaire (par MSDN, il "[g] ets la taille, en octets, du fichier actuel.") Il y a une belle page sur MSDN sur les tâches d'E / S courantes.




4

La taille sur le disque peut être différente si vous déplacez le fichier vers un autre système de fichiers (FAT16, NTFS, EXT3, etc.)

Comme d'autres répondants l'ont dit, cela vous donnera la taille en octets, pas la taille sur le disque.


0

La propriété Length de la classe FileInfo renvoie la taille du fichier (pas la taille sur le disque). Si vous voulez une taille de fichier formaté (c'est-à-dire 15 Ko) plutôt qu'une valeur d'octet long, vous pouvez utiliser CSharpLib , un package que j'ai créé qui ajoute plus de fonctionnalités à la classe FileInfo. Voici un exemple:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.