Tạo Ứng dụng Duyệt File và thư mục đơn giản với C Sharp
Bài viết này giới thiệu cách lấy các thông tin của các Ổ
đĩa hệ thống và cách lấy thông tin về các thư mục và File
để phân bố vào các điều khiển Treeview và listview. Đây
là một ứng dụng đơn giản của WinForm.
Trước hết, ta cần thu thập tất cả các thông tin về tất cả
các Ổ đĩa trong My Computer mà chúng ta có thể truy
cập vào và hiển thị tên là loại Ổ trong điều khiển
Treeview. Chúng ta có thể truy vấn thông qua
lớp ManagementObjectSearcher trong không gian tên
System.Management. Nó chấp nhận các câu lệnh SQL
Như thực hiện các câu truy vấn và trả về một đối tượng
ManagementOjbectCollection mà chứa tất cả các thông tin về Ổ đĩa mà chúng ta yêu cầu. bây
giờ chúng ta đã có tất cả các thông tin về Ổ đĩa như: Tên Ổ đĩa, Loại, các mô tả... Ta viết hàm
GetDrivers() để thực thi mục đích đó:
protected ManagementObjectCollection GetDrivers()
{
ManagementObjectSearcher query = new ManagementObjectSearcher("Select * From
Win32_LogicalDisk");
ManagementObjectCollection queryCollection = query.Get();
return queryCollection;
}
Khi ứng dụng được nạp lên chúng ta cần phải tìm tất cả các Ổ đĩa có trong My Computer và hiển
thị chúng.
private void PopulateDriveList()
{
TreeNode nodeTreeNode;
int imageIndex = 0;
int selectIndex = 0;
case CD: // Các Ổ Đĩa CD
imageIndex = 7;
selectIndex = 7;
break;
case Network: // Các Ổ Liên Kết qua mạng
imageIndex = 8;
selectIndex = 8;
break;
default:
imageIndex = 2;
selectIndex = 3;
break;
}
// Tạo một Driver Node mới
nodeTreeNode = new TreeNode(mo["Name"].ToString() + "\\", imageIndex,
selectIndex);
// Chèn vào Treeview
nodeCollection.Add(nodeTreeNode);
}
InitListView();
this.Cursor = Cursors.Default;
}
Và khởi tạo một Listview để hiển thị các thông tin về File trong Hàm InitListView():
protected void InitListView()
{
// Khởi tạo Listview ban đầu
else
{
// Phân bố các thư mục con và các File.
PopulateDirectory(currentNode, currentNode.Nodes);
}
this.Cursor = Cursors.Default;
}
Chúng ta kiểm tra xem Mục My Computer đã được mở rộng hay chưa? nếu chưa thì ta phải gọi
hàm để phân bố danh sách các ổ đĩa. Còn ngược lại, ta duyệt tiếp các thư mục ở cấp độ nhỏ hơn
bằng hàm PopulateDirectory(currentNode, currentNode.Nodes):
protected void PopulateDirectory(TreeNode currentNode, TreeNodeCollection
currentNodeCollection)
{
TreeNode nodeDir;
int imageIndex = 2; // Chỉ mục ảnh khi không được chọn
int selectIndex = 3; // Chỉ mục ảnh khi được chọn.
if (currentNode.SelectedImageIndex != 0)
{
// phân bố các thư mục trong Treeview
try
{
// Kiểm tra đường dẫn
if (Directory.Exists(GetFullPath(currentNode.FullPath)) == false)
{
MessageBox.Show("Ổ đĩa hoặc thư mục " + currentNode.ToString() + " Không
tồn tại");
}
else
}
catch (Exception e)
{
MessageBox.Show("Lỗi " + e);
}
}
}
Đến bước này, chúng ta vừa duyệt các thư mục con và hiển thị các File ra Listview. Chúng ta
viết Hàm PopulateFiles(TreeNode currentNode) để thực hiện điều này. Trong đó ta có sử dụng
hàm Directory.GetFiles với tham số là đường dẫn của Node hiện thời. hàm này sẽ trả về một
mảng các File trong Ổ đĩa hoặc thư mục lựa chọn. Ta duyệt qua tất cả các phần tử mảng và phân
bố vào Listview. Lớp FileInfo lấy các thông tin chi tiết về File như Dung lượng, ngày tạo, ngày
sửa đổi...
protected void PopulateFiles(TreeNode currentNode)
{
string[] lvData = new string[4];
InitListView();
if (currentNode.SelectedImageIndex != 0)
{
// Kiểm tra đường dẫn
if (Directory.Exists(GetFullPath(currentNode.FullPath)) == false)
{
MessageBox.Show("Thư mục hoặc đường dẫn" + currentNode.ToString() + "Không
tồn tại");
}
else
{
try