В заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых - C#
Формулировка задачи:
Здравствуйте! Есть задача: нужно в заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых. Я начал делать так:
в Program:
столкнулся с проблемой что одни и те же файлы возвращает несколько раз.
Похоже что в один и тот же лист файлы добавляются несколько раз. Может кто свежим взглядом посмотрит и подскажет как можно сделать. Спасибо!
class SearchEquals
{
public List<string> _pathFiles = new List<string>();
public void GetFiles(string path)
{
foreach (var item2 in Directory.GetFiles(path, "*.*", SearchOption.AllDirectories))
{
_pathFiles.Add(item2);
}
_pathFiles.Sort();
}
public Dictionary<long, List<FileInfo>> GetLength()
{
Dictionary<long, List<FileInfo>> groupLengPair = new Dictionary<long, List<FileInfo>>();
List<FileInfo> valueList= new List<FileInfo>();
for (int i = 0; i < _pathFiles.Count; i++)
{
FileInfo fi = new FileInfo(_pathFiles[i]);
for (int j = 0; j < _pathFiles.Count; j++)
{
FileInfo fii=new FileInfo(_pathFiles[j]);
if(!_pathFiles[i].Equals(_pathFiles[j]))
{
if (fi.Length.Equals(fii.Length))
{
if (groupLengPair.TryGetValue(fii.Length, out valueList))
{
valueList.Add(fii);
groupLengPair[fii.Length]=valueList;
}
if (!groupLengPair.TryGetValue(fii.Length, out valueList))
{
valueList = new List<FileInfo>();
valueList.Add(fii);
groupLengPair.Add(fii.Length, valueList);
}
}
}
}
}
return groupLengPair;
} string path = @"D:\desctop";
SearchEquals search = new SearchEquals();
search.GetFiles(path);
search.GetLength();Решение задачи: «В заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых»
textual
Листинг программы
// Вместо if (fi.Length.Equals(fii.Length)) // Пишем if (fi.Length == fii.Length)