Gurbette okul okuyunca; memlekette geçirilen zamanlar çok değerli oluyor. İşte yine böyle bir zamanda benim okuduğum ilkokulun (aynı zamanda babamın m. yardımcısı olarak çalıştığı okulun) diğer müdür yardımcısı ve en iyi arkadaşımın babası Recep amca benden bilgisayardaki aynı dosyaları nasıl bulup temizleyebileceğini bilip bilmediğimi sordu. Ben bunun nasıl yapılacağını sadece teoride biliyordum pratikte hiç denemedim ama böyle bir program yazabileceğimi söyledim. Programın tamamlanması yaklaşık 2 gün sürdü(Evde internet yoktu napiiim).
Programı bitirip test aşamasına geçtim. Bizim evdeki masaüstünde gayet iyi çalışıyordu; hatta bilgisayarımda birsürü aynı dosya buldum. Yani beklediğimden iyiydi. “Tamam” dedim, “bunu ben götürüp bir de okulda deneyeyim”. Okula gittim, dedim “benim program hazır, deneyelim bakalım kaç tane aynı dosya var”. Çalıştırdım programı, hiçbir şey bulmadı. Önce garibime gitti, sonra belki hakikaten aynı dosya yoktur diye düşündüm. Kendi elimle aynı dosya kopyalayıp tarattırdım yine sonuç yok. Ben Win7 bilgisayarda denediydim, XP de çalışmamazlığı bu yüzden yapmış olabilir diye düşündüm ama saçmaydı. Sonuçta kullandığım yöntemin heryerde geçerli olması gerekiyordu. Daha sonradan programı dizüstü bilgisayarımda dahil birçok Win7 yüklü bilgisayarda denemiş olmama rağmen hiç sonuç alamadım. Bu da benim böyle çalışmayan bir projemdir. Makalesini de 4-5 ay sonra yazdıyorum zaten. Yinede size bu konu hakkında bilgi vermek istedim.
Aynı dosyaları bulmak için .NET Framework içerisindeki System.Security.Cryptography altındaki MD5 veya SHA1 sınıflarını kullanıyoruz. Çünkü, bir dosyanın MD5 veya SHA1 çıktısı o dosyanın imzası gibi birşeydir. Aynı dosyalar da isimleri değişik olsa bile aynı çıktıyı verirler. Programımın çıkış noktası bu. Gerisi kodlamanıza kalmış.
Bir dosyanın MD5 veya SHA1 çıktısını alabilmek için birkaç metod çağırmaktan fazlasını yapmamız gerekiyor. Şöyle bir kod bizim işimizi görecektir.
private static string MD5Yap(string dosya)
{
FileStream str = new FileStream(dosya, FileMode.Open);
MD5 md5Hasher = MD5.Create();
byte[] data = md5Hasher.ComputeHash(str);
str.Close();
// Yukarıda bir byte dizisi elde ettik, şimdi onu okunabilir bir hale çevirelim.
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString(“x2″));
}
return sBuilder.ToString();
}
Aslında çalışmıyor ama yinede yaptığım uygulamayı indirip denemek istiyorsanız, buradan buyrun.
Popularity: 30%

#1 by mustafa on 27 Nisan 2010 - 00:52
çok güzel bir uygulama ama dosyaların ayrı ayrı MD5 hash’lerini gösterse listwiev de daha güzel olurdu sanırım
teşekkürler eline sağlık
#2 by xfiree on 29 Nisan 2010 - 19:44
haklı olabilirsin, bence gerek olmadığı için koydum ama nerde lazım olacağını bilemeyiz. Neyse, dosyaların MD5 veya SHA1 hash kodlarını elde etmek istiyorsan microsoft’ un
fciv aracını kullanabilirsin.
Parametre olarak dosya ismini vermen yeterli.