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;