public List <CompareResult> SourceCompare(string sourcePath, string destinationPath) { List <CompareResult> _sourceResults = new List <CompareResult>(); try { List <string> sourceFiles = FolderLister.GetAllFiles(sourcePath); List <string> destinationFiles = FolderLister.GetAllFiles(destinationPath); _worker.ReportProgress(15); foreach (string fileOrFolder in sourceFiles) { if (fileOrFolder.IsFile()) { _sourceResults.Add(ProcessFile(fileOrFolder, destinationFiles, CompareDirection.SOURCE)); } else if (BaseInfo.IncludeSubDiretory) { _sourceResults.AddRange(ProcessFolder(fileOrFolder, destinationFiles, CompareDirection.SOURCE)); } } _worker.ReportProgress(30); } catch (Exception ex) { ProcessLog.logError(ex.Message); } return(_sourceResults); }
private List <CompareResult> ProcessFolder(string fileOrFolder, List <string> otherFiles, CompareDirection direction) { List <CompareResult> results = new List <CompareResult>(); try { string dirName = '\\' + fileOrFolder.GetCurrentDir(); string correspondingDir = otherFiles.SingleOrDefault(r => r.IsDirectory() && r.EndsWith(dirName)); if (correspondingDir != null) { List <string> sourceFiles = FolderLister.GetAllFiles(fileOrFolder); List <string> destinationFiles = FolderLister.GetAllFiles(correspondingDir); if (sourceFiles.Count == 0 && destinationFiles.Count == 0) { results.Add(ProcessEmptyDirectory(fileOrFolder, correspondingDir, direction)); } else { foreach (string fileorFolder in destinationFiles) { results.AddRange(ProcessByType(fileorFolder, destinationFiles, direction)); } } } else { List <string> files = FolderLister.GetAllFiles(fileOrFolder); if (files.Count > 0) { foreach (var file in files) { results.AddRange(ProcessByType(file, null, direction)); } } else { results.Add(ProcessEmptyDirectory(fileOrFolder, string.Empty, direction)); } } } catch (Exception ex) { ProcessLog.logError(ex.Message); } return(results); }
public List <CompareResult> DestinationCompare(string destinationPath, string sourcePath) { List <CompareResult> _destinationResults = new List <CompareResult>(); try { List <string> sourceFiles = FolderLister.GetAllFiles(sourcePath); List <string> destinationFiles = FolderLister.GetAllFiles(destinationPath); _worker.ReportProgress(45); foreach (string fileOrFolder in destinationFiles) { if (fileOrFolder.IsFile()) { CompareResult result = ProcessFile(fileOrFolder, sourceFiles, CompareDirection.DESTINATION); if (IsNotPresent(result)) { _destinationResults.Add(result); } } else if (BaseInfo.IncludeSubDiretory) { List <CompareResult> results = ProcessFolder(fileOrFolder, sourceFiles, CompareDirection.DESTINATION); _destinationResults.AddRange(GetDestinationOnly(results)); } } _worker.ReportProgress(65); } catch (Exception ex) { ProcessLog.logError(ex.Message); } return(_destinationResults); }