private void LogConflictResult(NameConflictResult result) { if (result.OriginalFileName == "OK") { log.RecordWhitelog(result.OriginalFileName + "\t" + result.Path + "\t" + result.NameConflictFileName, true); } else { log.RecordRedlog(result.OriginalFileName + "\t" + result.Path + "\t" + result.NameConflictFileName, true); } }
public override void RunSub(ICloneable _threadParameter) { JudgeTaskCancelFlag(); DirectoryInfo originalFold = new DirectoryInfo(((NameConflictParameter)_threadParameter).OriginalDirectory); log.Log("Analyzing [" + originalFold.FullName + "]"); var originalfiles = originalFold.GetFiles().Where(s => { bool rtn = false; var extensionlist = ((NameConflictParameter)_threadParameter).OriginalExtension.Split(';'); foreach (string item in extensionlist) { rtn = rtn || s.Name.ToLower().EndsWith("." + item.ToLower()); } return(rtn); //s.Name.EndsWith(".exe") || s.Name.EndsWith(".doc") || s.Name.EndsWith(".docx") } ); List <NameConflictResult> listNameConflictResult = new List <NameConflictResult>(); IEnumerable <FileInfo> ListAllFile = (IEnumerable <FileInfo>)originalfiles.Where <FileInfo>(s => { return(true); }); // Check OrigLinal First foreach (FileInfo file in originalfiles) { JudgeTaskCancelFlag(); //Thread.Sleep(1000); // remove self first ListAllFile = (IEnumerable <FileInfo>)ListAllFile.Except(new FileInfo[] { file }); var conflictList = ListAllFile.Where(item => { return(Path.GetFileNameWithoutExtension(file.Name) == Path.GetFileNameWithoutExtension(item.Name)); }); if (conflictList.Count() > 0) { NameConflictResult conflictresult = new NameConflictResult(); conflictresult.OriginalFileName = file.Name; conflictresult.Path = ((NameConflictParameter)_threadParameter).OriginalDirectory; conflictresult.ExtensionName = Path.GetExtension(file.Name); foreach (FileInfo s in conflictList) { conflictresult.NameConflictFileName += s.Name + " ; "; // remove conflict file ListAllFile = (IEnumerable <FileInfo>)ListAllFile.Except(new FileInfo[] { s }); } listNameConflictResult.Add(conflictresult); } } if (((NameConflictParameter)_threadParameter).IsShowFolder) { if (listNameConflictResult.Count() == 0) { // none conflict files under this folder NameConflictResult conflictresult = new NameConflictResult(); conflictresult.OriginalFileName = "OK"; conflictresult.Path = ((NameConflictParameter)_threadParameter).OriginalDirectory; conflictresult.NameConflictFileName = "none conflicts"; listNameConflictResult.Add(conflictresult); } } log.DeleteLog(2); LogConflictResult(listNameConflictResult); foreach (DirectoryInfo dir in originalFold.GetDirectories()) { NameConflictParameter paramSub = (NameConflictParameter)((NameConflictParameter)_threadParameter).Clone(); paramSub.OriginalDirectory = dir.FullName; RunSub(paramSub); } }