C # dosya boyutunu nasıl elde edersiniz?


307

Disk boyutu değil, C # kullanarak bir dosyanın boyutunu almak için bir yol gerekir. Bu nasıl mümkün olabilir?

Şu anda bu döngü var

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

Bu diskteki boyutu veya boyutu döndürür mü?


İlgili, ancak VB.NET için: VB.NET'te dosya boyutunu belirleme ,
Peter Mortensen

Yanıtlar:



386

Giriş olarak zaten bir dosya yolunuz varsa, ihtiyacınız olan kod budur:

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

1
Try / catch bloğu ile çevreleyin ve burada açıklandığı gibi olası tüm istisnaları kontrol edin : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException ve - kullanım durumunuza bağlı - ArgumentNullException ve ArgumentException
huha

37

FileInfo.Lengthhile yapacak (MSDN başına "[g] geçerli dosyanın bayt cinsinden boyutunu.") MSDN'de yaygın G / Ç görevleriyle ilgili güzel bir sayfa var.




4

Dosyayı başka bir dosya sistemine (FAT16, NTFS, EXT3, vb.) Taşırsanız diskteki boyut farklı olabilir

Diğer yanıtlayıcıların söylediği gibi, bu size diskteki boyutu değil, bayt cinsinden boyutu verecektir.


0

FileInfo sınıfının 'Length özelliği, dosyanın boyutunu döndürür (diskteki boyutu değil). Uzun bir bayt değeri yerine biçimlendirilmiş bir dosya boyutu (yani 15 KB) istiyorsanız , FileInfo sınıfına daha fazla işlevsellik kazandıran bir paket olan CSharpLib'i kullanabilirsiniz . İşte bir örnek:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.