Jak uzyskać rozmiar pliku w C #?


307

Potrzebuję sposobu, aby uzyskać rozmiar pliku za pomocą C #, a nie rozmiar na dysku. Jak to jest możliwe?

Obecnie mam tę pętlę

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

Czy to zwróci rozmiar lub rozmiar na dysku?


Powiązane, ale dla VB.NET: Określanie rozmiaru pliku w VB.NET ,
Peter Mortensen

Odpowiedzi:



386

Jeśli masz już ścieżkę do pliku jako dane wejściowe, potrzebujesz takiego kodu:

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

1
Otocz go blokiem try / catch i sprawdź wszystkie możliwe wyjątki, jak opisano tutaj : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException i - w zależności od przypadku użycia - ArgumentNullException i ArgumentException
huha

37

FileInfo.Lengthzrobi lewę (według MSDN it „[g] określa rozmiar bieżącego pliku w bajtach.”) Na MSDN znajduje się ładna strona na temat typowych zadań we / wy.




4

Rozmiar na dysku może być inny, jeśli plik zostanie przeniesiony do innego systemu plików (FAT16, NTFS, EXT3 itp.)

Jak powiedzieli inni odpowiadający, da ci to rozmiar w bajtach, a nie rozmiar na dysku.


0

Właściwość Length klasy FileInfo zwraca rozmiar pliku (a nie rozmiar na dysku). Jeśli chcesz sformatowanego rozmiaru pliku (tj. 15 KB) zamiast długiej bajtu, możesz użyć CSharpLib , pakietu, który stworzyłem, który dodaje więcej funkcji do klasy FileInfo. Oto przykład:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.