Метод GetFiles()
получит только те файлы, которые существуют. Это не составляет случайные файлы, которые не существуют. Поэтому все, что вам нужно сделать, это проверить, существует ли он в другом списке.
Что-то в строках может сработать:
var sourceFiles = source.GetFiles();
var destFiles = dest.GetFiles();
foreach (var file in sourceFiles)
{
if(!destFiles.Any(x => x.Name == file.Name))
{
// Do whatever
}
}
Примечание: Вы, конечно, не можете гарантировать, что что-то не изменилось после того, как вы сделали вызовы на GetFiles()
. Например, файл мог быть удален или переименован, если вы попытаетесь скопировать его позже.
Возможно, можно как-то сделать лучше, используя метод Except
или что-то подобное. Например что-то вроде этого:
var sourceFiles = source.GetFiles();
var destFiles = dest.GetFiles();
var sourceFilesMissingInDestination = sourceFiles.Except(destFiles, new FileNameComparer());
foreach (var file in sourceFilesMissingInDestination)
{
// Do whatever
}
Где FileNameComparer реализован так:
public class FileNameComparer : IEqualityComparer<FileInfo>
{
public bool Equals(FileInfo x, FileInfo y)
{
return Equals(x.Name, y.Name);
}
public int GetHashCode(FileInfo obj)
{
return obj.Name.GetHashCode();
}
}
Не проверено, хотя: p