CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 371

371

Chương 9: File, thư mục, và I/O

"USAGE: WildcardTest [directory] [filterExpression]");

return;

}

DirectoryInfo dir = new DirectoryInfo(args[0]);

FileInfo[] files = dir.GetFiles(args[1]);

// Hiển thị tên và kích thước file.

foreach (FileInfo file in files) {

Console.Write("Name: " + file.Name + " ");

Console.WriteLine("Size: " + file.Length.ToString());

}

Console.ReadLine();

}

}

Nếu muốn tìm trong thư mục con, bạn cần sử dụng đệ quy. Nhiều mục trong chương sử dụng
kỹ thuật đệ quy để xử lý file, chẳng hạn 9.3 và 9.4.

11.

11.

Ki m tra hai file có trùng nhau hay không

Ki m tra hai file có trùng nhau hay không

Bạn cần so sánh nội dung của hai file và xác định chúng có trùng nhau hay
không.

Tính mã băm của mỗi file bằng lớp

System.Security.Cryptography.HashAlgorithm

rồi so sánh các mã băm.

Có nhiều cách để so sánh nhiều file. Ví dụ, có thể xét một phần của file xem có giống nhau,
hoặc đọc cả file so sánh từng byte. Cả hai cách trên đều đúng, nhưng trong một số trường hợp,
sử dụng mã băm thuận tiện hơn.
Một giải thuật băm sinh ra một dạng nhị phân đặc trưng (với kích thước nhỏ, thường khoảng
20 byte) cho file. Có khả năng hai file khác nhau có cùng mã băm, nhưng khả năng này hầu
như không xảy ra. Thực tế, cả những thay đổi nhỏ nhất (chẳng hạn, chỉ thay đổi một bit của
file nguồn) cũng có 50% khả năng thay đổi các bit của mã băm. Do đó, mã băm thường được
sử dụng để phát hiện dữ liệu bị sửa đổi (mã băm sẽ được đề cập chi tiết hơn trong chương 14).
Để tạo một mã băm, trước hết bạn phải tạo một đối tượng

HashAlgorithm

bằng phương thức

tĩnh

HashAlgorithm.Create

. Sau đó gọi

HashAlgorithm.ComputeHash

để nhận một mảng byte

chứa mã băm.
Ví dụ dưới đây đọc hai tên file từ đối số dòng lệnh và kiểm tra hai file này có trùng nhau hay
không:

using System;

using System.IO;

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.