Сравнение файлов в двух разных каталогах
На виртуалке есть удаленный ftp каталог с текстовыми файлами. Я получаю названия 5 последних файлов сортируя их по дате, и пытаюсь найти совпадения по названию файлов в каталоге на моем пк (если такого файла у меня нет, то необходимо скачать его).
При такой реализации программа перебирает каждый файл в моем каталоге, и соответственно качает файл с ftp бесконечное число раз, пока не произойдет совпадение или не закончится перебор. Можно ли как-то уйти от этого и скачивать файл только после проверки всех файлов в моем каталоге?
try
{
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "xxx.xxx.xxx.xxx",
UserName = "xxxx",
Password = "xx",
};
using (Session session = new Session())
{
session.Open(sessionOptions);
const string remotePath = "/files";
const string localPath = @"C:\downloaded\";
RemoteDirectoryInfo directoryInfo = session.ListDirectory(remotePath);
var firstFiveFiles = directoryInfo.Files
.OrderByDescending(i => i.LastWriteTime).Take(5);
if (firstFiveFiles == null)
{
throw new Exception("Файлы не найдены");
}
string[] files = new DirectoryInfo(localPath).GetFiles().Select(o => o.Name).ToArray();
foreach (var filenameRemote in firstFiveFiles)
{
foreach(string filenameLocal in files)
{
if (filenameRemote.Name == filenameLocal)
{
Console.WriteLine("Такой файл есть");
break;
}
else
{
session.GetFiles(
RemotePath.EscapeFileMask(filenameRemote.FullName), localPath).Check();
}
continue;
}
continue;
}
}
return 0;
}
catch (Exception e)
{
Console.WriteLine("Ошибка: {0}", e);
return 1;
}