Xác định kích thước tập tin trong C#

Đôi khi vì một mục đích nào đó, tôi cần xác định kích thước của tập tin được mở trong chương trình có kích thước là bao nhiêu. Nhìn tiểu tiết thì thấy hành động này vô nghĩa, nhưng trong một tổng thể lớn của một sản phẩm hoàn thiện, đôi khi nó là mắc xích quan trọng mà nếu thiếu đi, thì cả thành phẩm không thể định hình ra mắt được.

Trong thư viện .NET Framework của Microsoft, may mắn thay có hỗ trợ công việc này bằng lớp FileInfo. Cụ thể là thuộc tính Length của lớp này.

Ta quan sát chương trình mẫu.

FileInfo_c_sharp.PNG

Ta thiết kế một chương trình nho nhỏ, cho phép người dùng mở một file bất kỳ. Hiển thị đường dẫn tới file đó trong Textbox và kích thước file hiển thị ở phần Label có tên “File Size”. Đồng thời, để mở được file thì chương trình có sử dụng thêm công cụ OpenFileDialog.

Ta bỏ tất cả các xử lý trong điều kiện:

if (openFileDialog1.ShowDialog()==DialogResult.OK)

{

//Xử lý code

}

Tiếp tục, tôi cần lấy ra đường dẫn để hiển thị trên màn hình, đồng thời cũng để từ đó lấy ra kích thước file.

textBox1.Text = openFileDialog1.FileName.ToString();

Tiếp tục, tôi chuyển giá trị vừa gán vào Textbox này qua FileInfo để nó xác định file cần xử lý.

FileInfo fi = new FileInfo(textBox1.Text);

label2.Text = fi.Length.ToString();

Như vậy là xong rồi! Thử chạy lên xem nào.

FileInfo_c_sharp_1.PNG

Kết quả không như mong đợi lắm… Thô quá. Đó là vì thuộc tính Length của lớp FileInfo chỉ trả về số long là kích thước của file ở dạng bytes mà thôi.

Muốn nó hiển thị ở dạng MB hoặc GB thì ta phải tự tùy biến thêm.

float fileSize = fi.Length;
if (fileSize <= 1024)
{
         label2.Text = String.Format(“{0} bytes”, fileSize );
}
else if (fileSize <= (1024*1024))
{
         label2.Text = String.Format(“{0:0.0} KB”, fileSize /1024f);
}
else if (fileSize <= (1024 * 1024*1024))
{
         label2.Text = String.Format(“{0:0.0} MB”, fileSize/(1024f * 1024f));
}
else
{
        float fileGB = fileSize / (1024f * 1024f*1024f);
        label2.Text = String.Format(“{0:0.0} GB”, fileGB);
}

Đoạn này tôi xử lý còn non tay, code không đẹp.

Tất cả chỉ có vậy thôi.

FileInfo_c_sharp_2.PNG
Kích thước lớn cỡ GB
FileInfo_c_sharp_3.PNG
Kích thước cỡ MB
FileInfo_c_sharp_4.PNG
Kích thước cỡ KB
FileInfo_c_sharp_5.PNG
Kích thước nhỏ mức bytes

Ngày hôm nay xám xịt cũng như thời tiết cả ngày vậy.

VÕ TÌNH THƯƠNG

votinhthuong9@gmail.com

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s