Як отримати розмір файлу в C #?


307

Мені потрібен спосіб отримати розмір файлу за допомогою C #, а не розмір на диску. Як це можливо?

В даний час у мене є ця петля

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

Чи поверне це розмір чи розмір на диску?


Відповіді:



386

Якщо у вас вже є шлях до файлу як вхід, це потрібний вам код:

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

1
Обведіть його блоком спробу / лову і перевірте всі можливі винятки, як описано тут : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException і - залежно від вашої справи використання - ArgumentNullException та ArgumentException
huha

37

FileInfo.Lengthзробить трюк (на MSDN це "[g] позначає розмір поточного файлу в байтах.") На MSDN є приємна сторінка щодо загальних завдань вводу / виводу.




4

Розмір на диску може бути різним, якщо ви перемістите файл в іншу файлову систему (FAT16, NTFS, EXT3 тощо)

Як говорили інші відповіді, це дасть вам розмір у байтах, а не розмір на диску.


0

Властивість довжини класу FileInfo повертає розмір файлу (а не розмір на диску). Якщо ви бажаєте форматованого розміру файлу (тобто 15 Кб), а не великого байтового значення, ви можете використовувати CSharpLib , пакет, який я створив, що додає більше функціональності класу FileInfo. Ось приклад:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.