¿Cómo se obtiene el tamaño del archivo en C #?


307

Necesito una forma de obtener el tamaño de un archivo usando C #, y no el tamaño en el disco. ¿Cómo es esto posible?

Actualmente tengo este bucle

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

¿Esto devolverá el tamaño o el tamaño en el disco?


Respuestas:



386

Si ya tiene una ruta de archivo como entrada, este es el código que necesita:

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

1
Rodéelo con el bloque try / catch y verifique todas las excepciones posibles como se describe aquí : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException y, dependiendo de su caso de uso, ArgumentNullException y ArgumentException
huha

37

FileInfo.Lengthhará el truco (según MSDN "[g] obtiene el tamaño, en bytes, del archivo actual"). Hay una buena página en MSDN sobre tareas comunes de E / S.




4

El tamaño en el disco puede ser diferente si mueve el archivo a otro sistema de archivos (FAT16, NTFS, EXT3, etc.)

Como han dicho otros respondedores, esto le dará el tamaño en bytes, no el tamaño en el disco.


0

La propiedad Longitud de la clase FileInfo devuelve el tamaño del archivo (no el tamaño en el disco). Si desea un tamaño de archivo formateado (es decir, 15 KB) en lugar de un valor de byte largo, puede usar CSharpLib , un paquete que he creado que agrega más funcionalidad a la clase FileInfo. Aquí hay un ejemplo:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.