Como você obtém o tamanho do arquivo em c #?


307

Eu preciso de uma maneira de obter o tamanho de um arquivo usando c #, e não o tamanho do disco. Como isso é possível?

Atualmente eu tenho esse loop

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

Isso retornará o tamanho ou o tamanho do disco?


Respostas:



386

Se você já possui um caminho de arquivo como entrada, este é o código que você precisa:

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

1
Envolva-o com o bloco try / catch e verifique todas as possíveis exceções, conforme descrito aqui : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException e - dependem do seu caso de uso - ArgumentNullException e ArgumentException
huha

37

FileInfo.Lengthfará o truque (por MSDN, "[g] define o tamanho, em bytes, do arquivo atual".) Há uma boa página no MSDN em tarefas comuns de E / S.




4

O tamanho do disco pode ser diferente se você mover o arquivo para outro sistema de arquivos (FAT16, NTFS, EXT3, etc)

Como outros respondentes disseram, isso fornecerá o tamanho em bytes, não o tamanho do disco.


0

A propriedade FileInfo da classe 'Length retorna o tamanho do arquivo (não o tamanho do disco). Se você deseja um tamanho de arquivo formatado (ou seja, 15 KB) em vez de um valor de bytes longos, pode usar o CSharpLib , um pacote que criei que adiciona mais funcionalidade à classe FileInfo. Aqui está um exemplo:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.