示例#1
0
 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);
     }
 }
示例#2
0
        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);
            }
        }