2009-09-04 10 views
154

Potrzebuję sposobu, aby uzyskać rozmiar pliku przy użyciu C#, a nie rozmiar na dysku. Jak to jest możliwe?Jak uzyskać rozmiar pliku w C#?

Obecnie mam tej pętli

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

Spowoduje to przywrócenie wielkości lub rozmiar na dysku?

+0

Powiązany, ale dla VB.NET: * [Ustalenie rozmiar pliku w VB.NET] (http://stackoverflow.com/questions/10175630) *, –

Odpowiedz

162

FileInfo.Length zwróci długość pliku, w bajtach (nie rozmiar na dysku), więc to jest to, czego szukasz, tak myślę.

+11

@JL: Jednak dokumentacja ma. Możesz też zrobić prosty test. – jason

+3

Również: http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/85bf76ac-a254-41d4-a3d7-e7803c8d9bc3 jest to dyskusja o tym, jak uzyskać "inną wartość", która jest rozmiar dysku. –

5

Zwraca długość zawartości plików

25

FileInfo.Length rade (na MSDN to „[g] ETS wielkości w bajtach od bieżącego pliku”). Jest miły page na MSDN w sprawie wspólnych Zadania I/O.

7

MSDN FileInfo.Length mówi, że jest to "rozmiar bieżącego pliku w bajtach".

Mój typowy wyszukiwania Google na coś takiego jest: MSDN FileInfo

3

Rozmiar na dysku może być inna, jeśli przenieść plik do innego systemu plików (FAT16, NTFS, EXT3, etc)

Jak powiedzieli inni respondenci, da ci to rozmiar w bajtach, a nie rozmiar na dysku.

184

Jeśli już ścieżkę pliku jako wejścia, jest to kod trzeba:

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

i uzyskać rozmiaru pliku z File.ReadAllBytes(@"D:\\testPA.txt").Length

+2

Jeśli plik jest duży, uzyskanie jego długości zajmie Ci sporo czasu. – Grigory

+2

Ten kod może być bardzo niebezpieczny. – Katianie

+1

Powoduje odczytanie wszystkich bajtów w pamięci, w zależności od pliku może zająć trochę czasu i dodać dużo danych do pamięci. –