在此先感謝您的任何幫助。我甚至不確定這是否可行,但我試圖使用它們的哈希來獲取重複文件列表,以確定與哈希關聯的文件列表。從Linq查詢返回字典<FileHash,string []>
我有下面這樣:
Dictionary<FileHash, string[]> FindDuplicateFiles(string searchFolder)
{
Directory.GetFiles(searchFolder, "*.*")
.Select(
f => new
{
FileName = f,
FileHash = Encoding.UTF8.GetString(new SHA1Managed()
.ComputeHash(new FileStream(f,
FileMode.
OpenOrCreate,
FileAccess.Read)))
})
.GroupBy(f => f.FileHash)
.Select(g => new
{
FileHash = g.Key,
Files = g.Select(z => z.FileName).ToList()
})
.GroupBy(f => f.FileHash)
.Select(g => new {FileHash = g.Key, Files = g.Select(z => z.Files).ToArray()});
它編譯罰款,但我只是好奇,是否有甚至操縱的結果返回一個字典的方式。
任何建議,替代品,批評將不勝感激。
如果你切換到C#您應該使用EnumerateFiles代替的GetFiles 4已經。 – 2010-09-24 22:26:47
那些最後一行是重複的,是故意的?更好的編輯。 – 2010-09-24 22:28:03
請注意,您無法將任何隨機字節序列(例如SHA-1哈希)解碼爲字符串。 **不是每個字節序列都是有效的UTF-8!** – dtb 2010-09-24 22:30:41