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

0
1165

Khi đọc một bài viết trong một series mà không đọc hết toàn bộ chúng, thì thông thường dễ nản và phán xét rất cảm tính:”Viết cái này vớ vẩn, chả thấy có ích gì! Câu view hả?”

Lập trình C# series

Người đời thực ra không độc ác gì nhưng cứ thích bình phẩm chuyện thiên hạ, tự xem mình có quyền phán xét mọi thứ, bất chấp những phát ngôn của mình có làm cho người khác tổn thương hay không. Vì vậy, không ác mà thành ác.

Quay trở lại chủ đề bài viết. Đô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.

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.

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. Vì đoạn tùy biến để hiển thị kích thước dạng bytes, KB, MB, GB của tôi dở quá nên tôi không post ở đây. Nếu muốn tham khảo, bạn có thể tìm đọc ở blog của tôi.

This site uses Akismet to reduce spam. Learn how your comment data is processed.