Bagaimana Anda mendapatkan ukuran file dalam C #?

307

Saya perlu cara untuk mendapatkan ukuran file menggunakan C #, dan bukan ukuran pada disk. Bagaimana ini mungkin?

Saat ini saya memiliki loop ini

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

Apakah ini mengembalikan ukuran atau ukuran pada disk?

JL.
sumber
Terkait, tetapi untuk VB.NET: Menentukan ukuran file dalam VB.NET ,
Peter Mortensen

Jawaban:

386

Jika Anda sudah memiliki jalur file sebagai input, ini adalah kode yang Anda butuhkan:

long length = new System.IO.FileInfo(path).Length;
cinta hidup
sumber
1
Kelilingi dengan blok coba / tangkap dan periksa semua pengecualian yang mungkin seperti yang dijelaskan di sini : SecurityException, UnauthorizedAccessException, PathTooLongException, NotSupportedException, dan - dependend pada use case Anda - ArgumentNullException dan ArgumentException
huha
37

FileInfo.Lengthakan melakukan trik (per MSDN, "[g] mencari ukuran, dalam byte, dari file saat ini.") Ada halaman yang bagus di MSDN tentang tugas I / O yang umum.

jason
sumber
11

MSDN FileInfo.Length mengatakan bahwa itu "ukuran file saat ini dalam byte."

Pencarian Google khas saya untuk sesuatu seperti ini adalah: msdn FileInfo

Austin Salonen
sumber
7

Ini mengembalikan panjang isi file

Thomas Levesque
sumber
4

Ukuran pada disk mungkin berbeda, jika Anda memindahkan file ke sistem file lain (FAT16, NTFS, EXT3, dll)

Seperti yang dikatakan penjawab lain, ini akan memberi Anda ukuran dalam byte, bukan ukuran pada disk.

Charlie Garts
sumber
0

Properti Panjang kelas FileInfo mengembalikan ukuran file (bukan ukuran pada disk). Jika Anda menginginkan ukuran file yang diformat (yaitu 15 KB) daripada nilai byte yang panjang Anda bisa menggunakan CSharpLib , paket yang saya buat yang menambahkan lebih banyak fungsionalitas ke kelas FileInfo. Ini sebuah contoh:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
S. Ferrell
sumber