Come si ottiene la dimensione del file in C #?


307

Ho bisogno di un modo per ottenere la dimensione di un file usando C # e non la dimensione sul disco. Com'è possibile?

Attualmente ho questo ciclo

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

Questo restituirà la dimensione o la dimensione sul disco?


Risposte:



386

Se hai già un percorso di file come input, questo è il codice che ti serve:

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

1
Circondalo con il blocco try / catch e controlla tutte le possibili eccezioni come descritto qui : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException e - dipende dal tuo caso d'uso - ArgumentNullException e ArgumentException
huha

37

FileInfo.Lengthfarà il trucco (per MSDN "[g] ets la dimensione, in byte, del file corrente.") C'è una bella pagina su MSDN su attività I / O comuni.




4

Le dimensioni sul disco potrebbero essere diverse se si sposta il file in un altro file system (FAT16, NTFS, EXT3, ecc.)

Come hanno detto altri risponditori, questo ti darà la dimensione in byte, non la dimensione sul disco.


0

La proprietà Lunghezza della classe FileInfo restituisce la dimensione del file (non la dimensione sul disco). Se si desidera una dimensione di file formattata (ovvero 15 KB) anziché un valore di byte lungo, è possibile utilizzare CSharpLib , un pacchetto che ho creato che aggiunge più funzionalità alla classe FileInfo. Ecco un esempio:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.