Tin tức công nghệ Tạp chí công nghệ IG E-Learning Games trực tuyến Tìm kiếm Liên hệ Xin chào Bạn !   Đăng nhập  Đăng ký 
Tìm kiếm  
Trang chủ > Tạp chí công nghệ > IO > Microsoft .NET > Programming7/24/2008 7:44:17 AM
Đo kích thước Folder (directory) Đo tổng kích thước của một Folder bao gồm tổng dung lượng files và tổng dung lượng các folder con bằng C#. Đây là một tiện ích cho việc tính toán kích thước folder khi di chuyển, nén .... Giải thuật đệ qui.

Đệ qui là một giải thuật mà chúng ta sử dụng để tính toán lặp lại tác vụ tương tự. Tôi sẽ viết một bài chi tiết về giải thuật này, ở đây chúng ta cùng xét ví dụ. Folder A chứa các Folder con như: A1, A2, và các files: F1, F2, trong A1 chứa các files: A11,A12 ... khi đó việc đo dung lượng của Folder A phải là tổng của các file F1, F2 + Tổng dung lượng của Folder con là A1, A2.

Giải quyết vấn đề.

Để đo folder, chúng ta sẽ sử dụng hàm thư viện System.IO để kiểm tra các thông tin của File và Folder.

Tôi thực hiện hàm đo kích thước như sau:

private static long DirectorySize(string startPath){
// Lấy tổng số file trong folder
string[] fileNames = System.IO.Directory.GetFiles(startPath, "*.*");

// Tính tổng độ lớn
long totalSize = 0;
foreach (string fileName in fileNames){
// Sử dụng FileInfo để đo kích thước file
System.IO.FileInfo info = new System.IO.FileInfo(fileName);
totalSize += info.Length;
}
// Lấy danh sách các folder con của Folder hiện tại.
string[] directoryNames = System.IO.Directory.GetDirectories(startPath);
foreach (string directoryName in directoryNames){
// Thực hiện hàm đệ qui: gọi lại hàm DirectorySize để đo kích thước các folder con.
totalSize += DirectorySize(directoryName);
}
return totalSize;
// Total size.
}

Ở đây, chúng ta quan tâm đến trình tự thực hiện như sau:
1. Lấy về tổng số files có trong Folder
2. Dùng vòng lặp foreach để đo dung lượng của file.
3. Lấy danh sách các folder con của Folder hiện tại
4. Dùng lại hàm để đo kích thước folder con (Đệ qui).

Tôi mong rằng hàm lấy kích thước folder ở trên sẽ hữu ích cho bạn.

  Tác giả: 1#1 

Phân mục
 IO
 Java
 PHP
 2005
 2008
 MySQL
 Oracle
Danh sách thành viên tích cực
(30 ngày trở lại)
1. dungmeo (30)
2. buratino (14)
3. chan (9)
4. tramco (7)
6. anhtuan (4)
8. tienlbhoc (3)
9. gosu (2)
10. vinastar (2)
Thống kê iWiki
Tổng số bài viết 82
Tổng số Comments 21
 TRANG CHỦ   |   Đặt ITGatevn làm trang chủ   |   Liên hệ quảng cáo  |   Gửi bài viết
Copyright 2006-2010 ITGatevn.com.vn, All right reserved Contact us - Thông tin Tòa soạn
Xây dựng trên công nghệ IGCMS V3.0