private int RemoveFolder(string p_source, string p_target) { var _result = 0; var _dirsA = Directory.EnumerateDirectories(p_source, "*.*", SearchOption.TopDirectoryOnly) .Where(d => ContainsFolder(__config.SourceExcludeDirs, d) == false) .ToList(); var _dirsB = Directory.EnumerateDirectories(p_target, "*.*", SearchOption.TopDirectoryOnly) .Where(d => ContainsFolder(__config.TargetExcludeDirs, d) == false) .ToList(); var _folder_compare = new FolderCompare(__config.Offset); var _dirB_only = (from dir in _dirsB select dir.ToLower()).Except(_dirsA, _folder_compare); foreach (var _d in _dirB_only) { if (__config.RemoveDirs == true) { try { ClearAttributes(_d); Directory.Delete(_d, true); Console.WriteLine("-[{0}]: {1}", ++__config.DeletedFolder, _d); } catch (Exception) { Console.WriteLine("-[{0}]: {1}", ++__config.UnDeletedFolder, _d); } } else { Console.WriteLine("-[{0}]: {1}", ++__config.UnDeletedFolder, _d); } _result++; } return _result; }
public int TraverseFile(string p_source, string p_target) { var _result = 0; if (Directory.Exists(p_source) && Directory.Exists(p_target)) { _result += RemoveFiles(p_source, p_target); CopyFiles(p_source, p_target); var _dirsA = Directory.EnumerateDirectories(p_source, "*.*", SearchOption.TopDirectoryOnly) .Where(d => ContainsFolder(__config.SourceExcludeDirs, d) == false) .ToList(); var _dirsB = Directory.EnumerateDirectories(p_target, "*.*", SearchOption.TopDirectoryOnly) .Where(d => ContainsFolder(__config.TargetExcludeDirs, d) == false) .ToList(); var _folder_compare = new FolderCompare(__config.Offset); var _intersect = (from _dir in _dirsB select _dir.ToLower()).Intersect(_dirsA, _folder_compare); Parallel.ForEach(_intersect, _intB => { foreach (var _intA in _dirsA) { if (_folder_compare.Equals(_intA, _intB) == true) { _result += TraverseFile(_intA, _intB); break; } } }); } else { Console.WriteLine("not exists folder: {0} or {1}", p_source, p_target); } return _result; }
public async void CreateAsync_Works_DataMatches( Folder folder, User user, FolderCompare equalityComparer, List <EfRepo.FolderRepository> suts, List <EfRepo.UserRepository> efUserRepos, SqlRepo.FolderRepository sqlFolderRepo, SqlRepo.UserRepository sqlUserRepo) { var savedFolders = new List <Folder>(); foreach (var sut in suts) { var i = suts.IndexOf(sut); var efUser = await efUserRepos[i].CreateAsync(user); sut.ClearChangeTracking(); folder.UserId = efUser.Id; var postEfFolder = await sut.CreateAsync(folder); sut.ClearChangeTracking(); var savedFolder = await sut.GetByIdAsync(folder.Id); savedFolders.Add(savedFolder); } var sqlUser = await sqlUserRepo.CreateAsync(user); folder.UserId = sqlUser.Id; var sqlFolder = await sqlFolderRepo.CreateAsync(folder); savedFolders.Add(await sqlFolderRepo.GetByIdAsync(sqlFolder.Id)); var distinctItems = savedFolders.Distinct(equalityComparer); Assert.True(!distinctItems.Skip(1).Any()); }
private int CopyFolder(string p_source, string p_target) { var _result = 0; var _dirsA = Directory.EnumerateDirectories(p_source, "*.*", SearchOption.TopDirectoryOnly) .Where(d => ContainsFolder(__config.SourceExcludeDirs, d) == false) .ToList(); var _dirsB = Directory.EnumerateDirectories(p_target, "*.*", SearchOption.TopDirectoryOnly) .Where(d => ContainsFolder(__config.TargetExcludeDirs, d) == false) .ToList(); var _folder_compare = new FolderCompare(__config.Offset); var _dirA_only = (from _d in _dirsA select _d.ToLower()).Except(_dirsB, _folder_compare); foreach (var _d in _dirA_only) { if (__config.RemoveDirs == true) { try { var _target = Path.Combine(p_target, Path.GetFileName(_d)); if (!Directory.Exists(_target)) Directory.CreateDirectory(_target); CopyFiles(_d, _target); Console.WriteLine("+[{0}]: {1}", ++__config.CopiedFolder, _d); } catch (Exception) { Console.WriteLine("+[{0}]: {1}", ++__config.UnCopiedFolder, _d); } } else { Console.WriteLine("+[{0}]: {1}", ++__config.UnCopiedFolder, _d); } _result++; } return _result; }