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?


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;

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




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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.