Esempio n. 1
0
        private void StartBtnClick()
        {
            srcFi = new List <FileInfo>();
            lvMoveSrc.Items.Clear();
            var oriExcludes = excludes;

            excludes.Add(txtMoveDes.Text);

            if (!string.IsNullOrEmpty(txtMoveSrc.Text))
            {
                FileUtility.GetFilesRecursive(txtMoveSrc.Text, formats, excludes, srcFi, 200);

                lvMoveSrc.BeginUpdate();
                foreach (var f in srcFi)
                {
                    ListViewItem lvi = new ListViewItem(f.Name);
                    lvi.SubItems.Add(FileSize.GetAutoSizeString(f.Length, 1));

                    if (desFi.Exists(x => x.Name.ToLower() == f.Name.ToLower()))
                    {
                        lvi.BackColor = Color.Red;
                    }

                    lvMoveSrc.Items.Add(lvi);
                }
                lvMoveSrc.EndUpdate();
            }

            excludes = oriExcludes;
        }
Esempio n. 2
0
        public static string DeleteAndRename(Dictionary <string, List <FileItemModel> > input)
        {
            double          deleteSize = 0;
            CookieContainer cc         = Get115Cookie();
            var             pattern    = @"\(\d+\)";

            foreach (var data in input)
            {
                if (data.Value.Count >= 2)
                {
                    Console.WriteLine("正在处理 " + data.Key);

                    var biggest = data.Value.LastOrDefault();

                    Console.WriteLine("\t最大文件为 " + biggest.n + " 大小为 " + FileSize.GetAutoSizeString(biggest.s, 2));

                    data.Value.Remove(biggest);

                    foreach (var de in data.Value)
                    {
                        Console.WriteLine("\t删除 " + de.n + " 大小为 " + FileSize.GetAutoSizeString(de.s, 2));
                        Delete(de.fid, cc);
                        deleteSize += de.s;
                    }

                    Console.WriteLine("\t重命名 " + biggest.n + " 到 " + Regex.Replace(biggest.n, pattern, ""));
                    Rename(biggest.fid, Regex.Replace(biggest.n, pattern, ""), cc);
                    Console.WriteLine();
                }
            }

            return(FileSize.GetAutoSizeString(deleteSize, 2));
        }
Esempio n. 3
0
        public Model.ScanModels.EverythingResult EverythingSearch(string token, string content)
        {
            var to = ScanDataBaseManager.GetToken().Token;

            if (to == token)
            {
                var htmlModel = HtmlManager.GetHtmlContentViaUrl("http://*****:*****@"?s=&o=0&j=1&p=c&path_column=1&size_column=1&j=1&q=!c:\ " + EverythingHelper.Extensions + " " + content);

                if (htmlModel.Success)
                {
                    var retModel = JsonConvert.DeserializeObject <Model.ScanModels.EverythingResult>(htmlModel.Content);

                    if (retModel != null && retModel.results != null)
                    {
                        retModel.results = retModel.results.OrderByDescending(x => double.Parse(x.size)).ToList();

                        foreach (var r in retModel.results)
                        {
                            r.sizeStr = FileSize.GetAutoSizeString(double.Parse(r.size), 1);
                        }

                        return(retModel);
                    }
                }
            }

            return(new Model.ScanModels.EverythingResult());
        }
Esempio n. 4
0
        public static string DeleteList(List <FileItemModel> files, string pid)
        {
            var cc = Get115Cookie();

            var url = @"https://webapi.115.com/rb/delete";

            Dictionary <string, string> param = new Dictionary <string, string>();
            int  index      = 0;
            long deleteSize = 0;

            param.Add("pid", pid);

            foreach (var file in files)
            {
                param.Add($"fid[{index++}]", file.fid);
                deleteSize += file.s;
            }

            try
            {
                HtmlManager.Post(url, param, cc);
            }
            catch (Exception)
            {
            }

            return(FileSize.GetAutoSizeString(deleteSize, 1));
        }
Esempio n. 5
0
        public static void DeleteErrorFile(string log)
        {
            double deleteSize = 0;
            int    count      = 0;

            if (File.Exists(log))
            {
                StreamReader sr = new StreamReader(log);

                while (!sr.EndOfStream)
                {
                    var text = sr.ReadLine();

                    var deleteFile = text.Substring(text.IndexOf("文件 ") + "文件 ".Length);

                    if (File.Exists(deleteFile))
                    {
                        deleteSize += new FileInfo(deleteFile).Length;
                        count++;

                        File.Delete(deleteFile);
                    }
                }
            }

            Console.WriteLine("删除 " + count + " 个文件, 总大小 " + FileSize.GetAutoSizeString(deleteSize, 1));
        }
Esempio n. 6
0
        private void doRecursive()
        {
            listView1.BeginUpdate();

            foreach (var keyword in textBox1.Text.Split(','))
            {
                var tempKeyword = keyword.Trim().ToUpper();

                foreach (var movie in cacheMovies)
                {
                    if (movie.AvID.Trim().ToUpper().Contains(tempKeyword) || movie.AvID.Trim().ToUpper() == tempKeyword)
                    {
                        ListViewItem lvi = new ListViewItem(movie.AvID.Trim().ToUpper());

                        if (movie.Location.Length > 2 && movie.Location[1] != ':')
                        {
                            movie.Location = movie.Location.Substring(0, 1) + ":" + movie.Location.Substring(1);
                        }

                        if (File.Exists(movie.Location.Trim() + "\\" + movie.Name.Trim()))
                        {
                            var tempFi = new FileInfo(movie.Location.Trim() + "\\" + movie.Name.Trim());

                            lvi.SubItems.Add(FileSize.GetAutoSizeString(tempFi.Length, 2));
                            lvi.SubItems.Add(movie.Location.Trim() + "\\" + movie.Name.Trim());

                            listView1.Items.Add(lvi);
                        }
                    }
                }
            }

            listView1.EndUpdate();
        }
Esempio n. 7
0
        private List <AVViewModel> GetAVs(string where, string order)
        {
            var avs = FindDataBaseManager.GetAllViewModel(where, pageIndex, pageSize, order, ref pageModel);

            pageModel.TotalPage = (pageModel.Total % pageSize) == 0 ? (pageModel.Total / pageSize) : (pageModel.Total / pageSize) + 1;
            lbCurrent.Text      = "1";
            lbTotal.Text        = pageModel.TotalPage + "";

            foreach (var av in avs)
            {
                var img  = imgFolder + av.AvId + av.Name + ".jpg";
                var file = av.Location + "/" + av.FileName;

                if (File.Exists(img))
                {
                    av.Img = img;
                }

                if (File.Exists(file))
                {
                    FileInfo f = new FileInfo(file);
                    av.FileLength   = f.Length;
                    av.FileSize     = FileSize.GetAutoSizeString(f.Length, 2);
                    av.FileLocation = file;
                }
            }

            return(avs);
        }
Esempio n. 8
0
        public static void TestSearchEverything(string content)
        {
            var retModel  = new Model.ScanModels.EverythingResult();
            var htmlModel = HtmlManager.GetHtmlContentViaUrl("http://*****:*****@"?s=&o=0&j=1&p=c&path_column=1&size_column=1&j=1&q=!c:\ " + EverythingHelper.Extensions + " " + content);

            if (htmlModel.Success)
            {
                retModel = JsonConvert.DeserializeObject <Model.ScanModels.EverythingResult>(htmlModel.Content);

                if (retModel != null && retModel.results != null && retModel.results.Count > 0)
                {
                    retModel.results = retModel.results.OrderByDescending(x => double.Parse(x.size)).ToList();

                    foreach (var r in retModel.results)
                    {
                        r.sizeStr  = FileSize.GetAutoSizeString(double.Parse(r.size), 1);
                        r.location = "本地";
                    }
                }
                else
                {
                    retModel = new Model.ScanModels.EverythingResult
                    {
                        results = new List <EverythingFileResult>()
                    };

                    List <FileItemModel> oneOneFiveFiles = new List <FileItemModel>();

                    oneOneFiveFiles = OneOneFiveService.Get115SearchFileResult(OneOneFiveService.Get115Cookie(), content);

                    oneOneFiveFiles.AddRange(OneOneFiveService.Get115SearchFileResult(OneOneFiveService.Get115Cookie(), content, "2068937774368408801"));

                    if (oneOneFiveFiles != null && oneOneFiveFiles.Any())
                    {
                        var targetFile = oneOneFiveFiles.Where(x => x.n.ToLower().Contains(content.ToLower()) && !string.IsNullOrEmpty(x.fid)).ToList();
                        retModel.totalResults = targetFile.Count + "";

                        if (targetFile != null)
                        {
                            foreach (var file in targetFile)
                            {
                                EverythingFileResult temp = new EverythingFileResult
                                {
                                    size     = file.s + "",
                                    sizeStr  = FileSize.GetAutoSizeString(double.Parse(file.s + ""), 1),
                                    location = "115网盘",
                                    name     = file.n
                                };

                                retModel.results.Add(temp);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 9
0
        public static List <FileInfo> RecordDeleteFiles(string folder)
        {
            var drive = folder + @":\";
            List <DeleteFileBackup> files    = new List <DeleteFileBackup>();
            List <FileInfo>         NotFound = new List <FileInfo>();
            List <FileInfo>         ret      = new List <FileInfo>();
            var wangpanFiles = Get115FilesModel();

            if (Directory.Exists(drive + FinFolder))
            {
                ret.AddRange(new DirectoryInfo(drive + FinFolder).GetFiles());
            }

            if (Directory.Exists(drive + UpFolder))
            {
                ret.AddRange(new DirectoryInfo(drive + UpFolder).GetFiles());
            }

            foreach (var file in ret)
            {
                var matchRecord = wangpanFiles.FirstOrDefault(x => x.n.Equals(file.Name, StringComparison.OrdinalIgnoreCase) && x.s == file.Length);
                if (matchRecord != null)
                {
                    files.Add(new DeleteFileBackup()
                    {
                        AvId        = file.Name.Split('-')[0] + "-" + file.Name.Split('-')[1],
                        Drive       = drive,
                        Extension   = file.Extension,
                        FileName    = file.Name,
                        FileSize    = file.Length,
                        FileSizeStr = FileSize.GetAutoSizeString(file.Length, 1),
                        Sha         = matchRecord.sha
                    });
                }
                else
                {
                    NotFound.Add(file);
                }
            }

            var fileName = $@"c:\setting\backup{folder}{DateTime.Now.ToString("yyyyMMdd")}.json";

            if (!File.Exists(fileName))
            {
                File.CreateText(fileName).Close();
            }

            StreamWriter sw = new StreamWriter(fileName);

            sw.WriteLine(JsonConvert.SerializeObject(files));
            sw.Close();

            return(NotFound);
        }
Esempio n. 10
0
        public static List <RemoveSubModel> RemoveSubFolder(string sourceFolder, string descFolder, string excludeFolder = "tempFin,Fin,movefiles", int fileSizeLimit = 200)
        {
            Dictionary <string, int> moveFileCheck = new Dictionary <string, int>();
            List <RemoveSubModel>    ret           = new List <RemoveSubModel>();

            if (Directory.Exists(sourceFolder))
            {
                descFolder = (descFolder.EndsWith("\\") || descFolder.EndsWith("/")) ? descFolder : descFolder + "\\";

                if (!Directory.Exists(descFolder))
                {
                    Directory.CreateDirectory(descFolder);
                }

                excludes.AddRange(excludeFolder.Split(',').ToList());

                List <FileInfo> files  = new List <FileInfo>();
                var             status = FileUtility.GetFilesRecursive(sourceFolder, formats, excludes, files, fileSizeLimit);

                if (string.IsNullOrWhiteSpace(status))
                {
                    foreach (var file in files)
                    {
                        var tempFile = descFolder + file.Name;

                        if (moveFileCheck.ContainsKey(tempFile))
                        {
                            var index = moveFileCheck[tempFile] + 1;
                            tempFile = descFolder + file.Name.Replace(file.Extension, "") + "_" + index + file.Extension;
                            moveFileCheck[tempFile] = index;
                        }
                        else
                        {
                            moveFileCheck.Add(tempFile, 1);
                        }

                        var template = "_\\d{1,}\\.";

                        ret.Add(new RemoveSubModel {
                            SrcFile        = file.FullName,
                            DescFile       = tempFile,
                            IsDuplicate    = Regex.Matches(tempFile, template, RegexOptions.IgnoreCase).Count > 0 ? true : false,
                            SrcFileSize    = file.Length,
                            ScrFileSizeStr = FileSize.GetAutoSizeString(file.Length, 1)
                        });
                    }
                }
            }

            return(ret);
        }
Esempio n. 11
0
        public static List <LocalAndRemoteFiles> GetLocalAndRemoteFiles(bool includeUpFolder = true, FileSearchScope scope = FileSearchScope.Both)
        {
            List <LocalAndRemoteFiles> ret = new List <LocalAndRemoteFiles>();

            if (scope.HasFlag(FileSearchScope.Local))
            {
                var localFiles = GetAllLocalAvs(includeUpFolder);

                foreach (var file in localFiles)
                {
                    ret.Add(new LocalAndRemoteFiles()
                    {
                        FileExtension            = Path.GetExtension(file.FullName),
                        FileLocation             = Path.GetDirectoryName(file.FullName),
                        FileName                 = file.Name,
                        FileNameWithoutExtension = Path.GetFileNameWithoutExtension(file.FullName),
                        FileSize                 = file.Length,
                        FileSizeStr              = FileSize.GetAutoSizeString(file.Length, 1),
                        IsChinese                = file.Name.Contains("-C."),
                        IsLocal  = true,
                        FileAvId = file.Name.Split('-').Length >= 3 ? file.Name.Split('-')[0] + "-" + file.Name.Split('-')[1] : ""
                    });
                    ;
                }
            }

            if (scope.HasFlag(FileSearchScope.Remote))
            {
                var remoteFiles = Get115FilesModel();

                foreach (var file in remoteFiles)
                {
                    ret.Add(new LocalAndRemoteFiles()
                    {
                        FileExtension            = "." + file.ico,
                        FileLocation             = file.cid,
                        FileName                 = file.n,
                        FileNameWithoutExtension = file.n.Replace("." + file.ico, ""),
                        FileSize                 = file.s,
                        FileSizeStr              = FileSize.GetAutoSizeString(file.s, 1),
                        IsChinese                = file.n.Contains("-C."),
                        IsLocal  = false,
                        FileAvId = file.n.Split('-').Length >= 3 ? file.n.Split('-')[0] + "-" + file.n.Split('-')[1] : "",
                        PickCode = file.pc
                    });
                }
            }

            return(ret);
        }
Esempio n. 12
0
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node.Nodes.Count == 0)
            {
                currentFi = (FileInfo)e.Node.Tag;
                currentTN = e.Node;

                txtName.Text = currentFi.FullName;
                txtSize.Text = FileSize.GetAutoSizeString(currentFi.Length, 2);
            }
            else
            {
                ResetUI();
            }
        }
Esempio n. 13
0
        private void SeedList_Load(object sender, EventArgs e)
        {
            listView1.BeginUpdate();

            foreach (var seed in seedList)
            {
                ListViewItem lvi = new ListViewItem(seed.Title);
                lvi.SubItems.Add(FileSize.GetAutoSizeString(seed.Size, 1));
                lvi.SubItems.Add(seed.CompleteCount + "");
                lvi.SubItems.Add(seed.Date.ToString("yyyy-MM-dd"));
                lvi.Tag = seed.MagUrl;

                listView1.Items.Add(lvi);
            }

            listView1.EndUpdate();
        }
Esempio n. 14
0
        public static List <UnmatchVW> GetUnMatch(bool includePlayed)
        {
            List <UnmatchVW> ret = new List <UnmatchVW>();

            var drivers = Environment.GetLogicalDrives();
            var folder  = "pt";

            foreach (var driver in drivers)
            {
                if (Directory.Exists(driver + "\\" + folder))
                {
                    List <FileInfo> fi    = new List <FileInfo>();
                    var             files = FileUtility.GetFilesRecursive(driver + "\\" + folder, formats, excludes, fi, 500);

                    foreach (var f in fi)
                    {
                        UnmatchVW temp = new UnmatchVW();
                        temp.FileName = f.Name.Replace(f.Extension, "");
                        temp.FilePath = f.FullName;
                        temp.FileSize = FileSize.GetAutoSizeString(f.Length, 2);
                        temp.FileExts = f.Extension;

                        if (ScanDataBaseManager.ViewedFile(FileUtility.ReplaceInvalidChar(f.FullName)))
                        {
                            temp.HasPlayed = true;
                        }

                        if (includePlayed)
                        {
                            ret.Add(temp);
                        }
                        else
                        {
                            if (temp.HasPlayed == false)
                            {
                                ret.Add(temp);
                            }
                        }
                    }
                }
            }
            return(ret);
        }
Esempio n. 15
0
        private void ShowContent()
        {
            listView1.Items.Clear();

            listView1.BeginUpdate();
            foreach (var file in fi)
            {
                ListViewItem lvi = new ListViewItem(file.DirectoryName);
                lvi.SubItems.Add(file.Name);
                lvi.SubItems.Add(FileSize.GetAutoSizeString(file.Length, 1));
                lvi.Tag = file.FullName;

                if (ScanDataBaseManager.ViewedFile(FileUtility.ReplaceInvalidChar(file.FullName)))
                {
                    lvi.BackColor = Color.Green;
                }

                listView1.Items.Add(lvi);
            }
            listView1.EndUpdate();
        }
Esempio n. 16
0
        public JsonResult GetComic(string name)
        {
            string   message = "文件未找到";
            bool     success = false;
            FileInfo fi      = null;
            string   url     = "";
            double   size    = 0;
            string   sizeStr = "";

            var files = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\ComicDownload\\").GetFiles();

            fi = files.FirstOrDefault(x => x.Name == name);

            if (fi != null)
            {
                success = true;
                message = "";
                url     = "http://www.cainqs.com:8087/comicdownload/" + fi.Name;
                size    = fi.Length;
                sizeStr = FileSize.GetAutoSizeString(fi.Length, 1);
            }

            return(Json(new { success = success, message = message, url = url, size = size, sizeStr = sizeStr }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 17
0
        static void Main(string[] args)
        {
            var          files  = GetFiles();
            var          avs    = JavDataBaseManager.GetAllAV();
            var          prefix = FileUtility.GetPrefix(avs);
            List <Match> temp   = new List <Match>();

            foreach (var f in files)
            {
                FileInfo file = new FileInfo(f);
                var      scan = new Scan
                {
                    FileName = file.Name.Trim().ToLower(),
                    Location = file.DirectoryName.Trim().ToLower(),
                    Size     = FileSize.GetAutoSizeString(file.Length, 2)
                };

                var possibleIDs = FileUtility.GetPossibleID(scan, prefix);

                AddTemp(scan, possibleIDs, temp);
            }

            Console.ReadKey();
        }
Esempio n. 18
0
        private void ListItem(string folder)
        {
            var             rawData = FileUtility.GetCheckDuplicatedData(folder);
            List <FileInfo> files   = new List <FileInfo>();

            foreach (var item in rawData)
            {
                if (item.Value.Count > 1)
                {
                    files.AddRange(item.Value);
                }
            }

            files = files.OrderByDescending(x => x.Name).ToList();

            listView1.BeginUpdate();
            foreach (var file in files)
            {
                ListViewItem lvi = new ListViewItem(file.Name);
                lvi.SubItems.Add(file.Extension);
                lvi.SubItems.Add(FileSize.GetAutoSizeString(file.Length, 2));
                if (file.Extension.ToLower() != ".iso")
                {
                    lvi.SubItems.Add(FileUtility.GetDuration(file.FullName, "c:/setting/ffmpeg.exe"));
                }
                else
                {
                    lvi.SubItems.Add("-");
                }
                lvi.Tag = file;

                listView1.Items.Add(lvi);
            }

            listView1.EndUpdate();
        }
Esempio n. 19
0
        private void MoveDesClick()
        {
            InitFD(fdMoveDes, txtMoveDes);
            desFi = new List <FileInfo>();
            lvMoveDes.Items.Clear();

            if (!string.IsNullOrEmpty(txtMoveDes.Text))
            {
                var files = Directory.GetFiles(txtMoveDes.Text);

                lvMoveDes.BeginUpdate();
                foreach (var f in files)
                {
                    FileInfo fi = new FileInfo(f);

                    ListViewItem lvi = new ListViewItem(fi.Name);
                    lvi.SubItems.Add(FileSize.GetAutoSizeString(fi.Length, 1));

                    lvMoveDes.Items.Add(lvi);
                    desFi.Add(fi);
                }
                lvMoveDes.EndUpdate();
            }
        }
Esempio n. 20
0
        private static string PrintReport(ReportModel report)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(string.Format("一共有 {0} 条AV信息", report.TotalRecord));
            sb.AppendLine(string.Format("本地拥有 {0} 部AV", report.TotalAV));
            sb.AppendLine("其中包含如下格式: ");
            report.Formats.OrderByDescending(x => x.Value).ToList().ForEach(x => sb.AppendLine("\t" + x.Key + " 有 " + x.Value + "部 "));
            sb.AppendLine();
            sb.AppendLine("大于1GB的有 " + report.FileLargeThan1G);
            sb.AppendLine("大于2GB的有 " + report.FileLargeThan2G);
            sb.AppendLine("大于4GB的有 " + report.FileLargeThan4G);
            sb.AppendLine("大于6GB的有 " + report.FileLargeThan6G);
            sb.AppendLine("一共有 " + report.TotalFiles + " 个文件,总大小 " + FileSize.GetAutoSizeString(report.TotalSizeLong, 2));
            sb.AppendLine("其中有 " + report.AvHasMoreThan1File + " 部AV有超过1张CD数");

            sb.AppendLine();
            sb.AppendLine("TOP " + report.Top + " 女优");
            foreach (var content in report.TopActress.OrderByDescending(x => x.Value).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Key + " 有 " + content.Value + " 部");
            }
            sb.AppendLine();

            sb.AppendLine("TOP " + report.Top + " 系列");
            foreach (var content in report.TopPrefix.OrderByDescending(x => x.Value).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Key + " 有 " + content.Value + " 部");
            }
            sb.AppendLine();

            sb.AppendLine("TOP " + report.Top + " 类型");
            foreach (var content in report.TopCategory.OrderByDescending(x => x.Value).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Key + " 有 " + content.Value + " 部");
            }
            sb.AppendLine();

            sb.AppendLine("TOP " + report.Top + " 导演");
            foreach (var content in report.TopDirctor.OrderByDescending(x => x.Value).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Key + " 有 " + content.Value + " 部");
            }
            sb.AppendLine();

            sb.AppendLine("TOP " + report.Top + " 公司");
            foreach (var content in report.TopCompany.OrderByDescending(x => x.Value).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Key + " 有 " + content.Value + " 部");
            }
            sb.AppendLine();

            sb.AppendLine("TOP " + report.Top + " 年份");
            foreach (var content in report.TopDate.OrderByDescending(x => x.Value).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Key + " 有 " + content.Value + " 部");
            }

            sb.AppendLine();
            sb.AppendLine("总数大于100的TOP " + report.Top + " 女优占比");
            foreach (var content in report.ActressRatio.Where(x => x.Total >= 100).OrderByDescending(x => x.Ratio).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Name + " 拥有 " + content.Have + " / " + content.Total + " 占比 " + GetPercentage(content.Have, content.Total, 1) + "%");
            }
            sb.AppendLine();

            sb.AppendLine("总数大于100的TOP " + report.Top + " 系列占比");
            foreach (var content in report.PrefixRatio.Where(x => x.Total >= 100).OrderByDescending(x => x.Ratio).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Name + " 拥有 " + content.Have + " / " + content.Total + " 占比 " + GetPercentage(content.Have, content.Total, 1) + "%");
            }
            sb.AppendLine();

            sb.AppendLine("总数大于100的TOP " + report.Top + " 类型占比");
            foreach (var content in report.CategoryRatio.Where(x => x.Total >= 100).OrderByDescending(x => x.Ratio).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Name + " 拥有 " + content.Have + " / " + content.Total + " 占比 " + GetPercentage(content.Have, content.Total, 1) + "%");
            }
            sb.AppendLine();

            sb.AppendLine("总数大于100的TOP " + report.Top + " 导演占比");
            foreach (var content in report.DirectorRatio.Where(x => x.Total >= 100).OrderByDescending(x => x.Ratio).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Name + " 拥有 " + content.Have + " / " + content.Total + " 占比 " + GetPercentage(content.Have, content.Total, 1) + "%");
            }
            sb.AppendLine();

            sb.AppendLine("总数大于100的TOP " + report.Top + " 公司占比");
            foreach (var content in report.CompanyRatio.Where(x => x.Total >= 100).OrderByDescending(x => x.Ratio).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Name + " 拥有 " + content.Have + " / " + content.Total + " 占比 " + GetPercentage(content.Have, content.Total, 1) + "%");
            }
            sb.AppendLine();

            sb.AppendLine("总数大于100的TOP " + report.Top + " 年份占比");
            foreach (var content in report.YearRatio.Where(x => x.Total >= 100).OrderByDescending(x => x.Ratio).Take(report.Top))
            {
                sb.AppendLine("\t" + content.Name + " 拥有 " + content.Have + " / " + content.Total + " 占比 " + GetPercentage(content.Have, content.Total, 1) + "%");
            }

            return(sb.ToString());
        }
Esempio n. 21
0
        private void btnExe_Click(object sender, EventArgs e)
        {
            StringBuilder sb          = new StringBuilder();
            var           folder      = "c:\\setting\\checkLog\\";
            string        logFile     = folder + DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + "log.txt";
            long          emptySpace  = 0;
            int           updateCount = 0;
            int           deleteCount = 0;
            string        rootFolder  = txtSource.Text + "\\";

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            for (int i = 0; i < listView1.Items.Count; i++)
            {
                FileInfo fi = (FileInfo)listView1.Items[i].Tag;

                if (listView1.Items[i].BackColor == Color.Yellow)
                {
                    sb.AppendLine("----重命名从 " + rootFolder + fi.Name + " 到 " + rootFolder + listView1.Items[i].SubItems[0].Text);
                    updateCount++;
                }

                if (listView1.Items[i].BackColor == Color.Red)
                {
                    sb.AppendLine("****删除 " + rootFolder + fi.Name);
                    emptySpace += fi.Length;
                    deleteCount++;
                }
            }

            var           res     = MessageBox.Show("你将重命名 " + updateCount + " 个文件" + "\r" + "删除 " + deleteCount + " 个文件" + "\r" + "共腾出空间 " + FileSize.GetAutoSizeString(emptySpace, 2), "警告");
            StringBuilder sbError = new StringBuilder();


            if (res == DialogResult.OK || res == DialogResult.Yes)
            {
                for (int i = 0; i < listView1.Items.Count; i++)
                {
                    try
                    {
                        FileInfo fi = (FileInfo)listView1.Items[i].Tag;

                        if (listView1.Items[i].BackColor == Color.Yellow)
                        {
                            if (File.Exists(rootFolder + listView1.Items[i].SubItems[0].Text))
                            {
                                sbError.AppendLine("--------" + listView1.Items[i].SubItems[0].Text);
                                File.Move(rootFolder + fi.Name, rootFolder + "--------" + listView1.Items[i].SubItems[0].Text);
                            }
                            else
                            {
                                File.Move(rootFolder + fi.Name, rootFolder + listView1.Items[i].SubItems[0].Text);
                            }
                        }

                        if (listView1.Items[i].BackColor == Color.Red)
                        {
                            File.Delete(rootFolder + fi.Name);
                        }
                    }
                    catch (Exception ee)
                    {
                        sbError.AppendLine(ee.ToString());
                    }
                }

                File.Create(logFile).Close();
                StreamWriter sw = new StreamWriter(logFile);
                sw.WriteLine(sb.ToString());
                sw.Close();

                listView1.Items.Clear();
                ResetUi();
            }

            MessageBox.Show(sbError.ToString());
        }
Esempio n. 22
0
        public ReportVM GetReport(string token, int top = 5)
        {
            ReportVM ret = new ReportVM();
            var      to  = ScanDataBaseManager.GetToken().Token;

            if (to == token)
            {
                StringBuilder sb     = new StringBuilder();
                var           report = ScanDataBaseManager.GetReport();
                var           items  = ScanDataBaseManager.ReportItem(report.ReportId);

                ret.TotalCount = report.TotalExist;
                sb.AppendLine($"总Av数量: [{ret.TotalCount}]");
                ret.TotalSizeStr = FileSize.GetAutoSizeString((double)report.TotalExistSize, 1);
                sb.AppendLine($"总Av大小: [{ret.TotalSizeStr}]");
                ret.TotalSize    = (double)report.TotalExistSize;
                ret.ChineseCount = report.ChineseCount;
                sb.AppendLine($"中文Av数量: [{ret.ChineseCount}]");
                ret.FileLessThan1G = report.LessThenOneGiga;
                sb.AppendLine($"文件小于1GB: [{ret.FileLessThan1G}]");
                ret.FileLargeThan1G = report.OneGigaToTwo;
                sb.AppendLine($"大于1GB小于2GB: [{ret.FileLargeThan1G}]");
                ret.FileLargeThan2G = report.TwoGigaToFour;
                sb.AppendLine($"大于2GB小于4GB: [{ret.FileLargeThan2G}]");
                ret.FileLargeThan4G = report.FourGigaToSix;
                sb.AppendLine($"大于4GB小于6GB: [{ret.FileLargeThan4G}]");
                ret.FileLargeThan6G = report.GreaterThenSixGiga;
                sb.AppendLine($"文件大于6GB: [{ret.FileLargeThan6G}]");

                var extensionModel = JsonConvert.DeserializeObject <Dictionary <string, int> >(report.Extension);

                ret.Formats = extensionModel;
                sb.AppendLine("后缀分布:");
                foreach (var ext in extensionModel)
                {
                    sb.AppendLine($"\t{ext.Key} : {ext.Value}");
                }

                foreach (ReportType type in Enum.GetValues(typeof(ReportType)))
                {
                    List <ReportItem> i = new List <ReportItem>();
                    switch (type)
                    {
                    case ReportType.Actress:
                        i = items.Where(x => (ReportType)x.ReportType == type).OrderByDescending(x => x.ExistCount).Take(top).ToList();

                        sb.AppendLine("女优TOP" + top);

                        foreach (var temp in i)
                        {
                            var name  = temp.ItemName;
                            var count = temp.ExistCount;
                            var ratio = $"{temp.ExistCount} / {temp.TotalCount}";
                            var size  = FileSize.GetAutoSizeString(temp.TotalSize, 1);

                            sb.AppendLine($"\t{name} -> 作品 {ratio},总大小 {size}");
                        }

                        break;

                    case ReportType.Category:
                        i = items.Where(x => (ReportType)x.ReportType == type).OrderByDescending(x => x.ExistCount).Take(top).ToList();

                        sb.AppendLine("分类TOP" + top);

                        foreach (var temp in i)
                        {
                            var name  = temp.ItemName;
                            var count = temp.ExistCount;
                            var ratio = $"{temp.ExistCount} / {temp.TotalCount}";
                            var size  = FileSize.GetAutoSizeString(temp.TotalSize, 1);

                            sb.AppendLine($"\t{name} -> 作品 {ratio},总大小 {size}");
                        }

                        break;

                    case ReportType.Prefix:
                        i = items.Where(x => (ReportType)x.ReportType == type).OrderByDescending(x => x.ExistCount).Take(top).ToList();

                        sb.AppendLine("番号TOP" + top);

                        foreach (var temp in i)
                        {
                            var name  = temp.ItemName;
                            var count = temp.ExistCount;
                            var ratio = $"{temp.ExistCount} / {temp.TotalCount}";
                            var size  = FileSize.GetAutoSizeString(temp.TotalSize, 1);

                            sb.AppendLine($"\t{name} -> 作品 {ratio},总大小 {size}");
                        }

                        break;

                    case ReportType.Company:
                        i = items.Where(x => (ReportType)x.ReportType == type).OrderByDescending(x => x.ExistCount).Take(top).ToList();

                        sb.AppendLine("公司TOP" + top);

                        foreach (var temp in i)
                        {
                            var name  = temp.ItemName;
                            var count = temp.ExistCount;
                            var ratio = $"{temp.ExistCount} / {temp.TotalCount}";
                            var size  = FileSize.GetAutoSizeString(temp.TotalSize, 1);

                            sb.AppendLine($"\t{name} -> 作品 {ratio},总大小 {size}");
                        }

                        break;

                    case ReportType.Date:
                        i = items.Where(x => (ReportType)x.ReportType == type).OrderByDescending(x => x.ExistCount).Take(top).ToList();

                        sb.AppendLine("日期TOP" + top);

                        foreach (var temp in i)
                        {
                            var name  = temp.ItemName;
                            var count = temp.ExistCount;
                            var ratio = $"{temp.ExistCount} / {temp.TotalCount}";
                            var size  = FileSize.GetAutoSizeString(temp.TotalSize, 1);

                            sb.AppendLine($"\t{name} -> 作品 {ratio},总大小 {size}");
                        }

                        break;
                    }
                }

                ret.ShowContent = sb.ToString();
            }

            return(ret);
        }
Esempio n. 23
0
        static void Main(string[] args)
        {
            Dictionary <string, List <FileInfo> > fileContainer = new Dictionary <string, List <FileInfo> >();
            string folder                 = "fin\\";
            var    drivers                = Environment.GetLogicalDrives();
            int    single                 = 0;
            int    duplicate              = 0;
            int    total                  = 0;
            long   totalSize              = 0;;
            long   singleSize             = 0;
            long   duplicateSize          = 0;
            List <CheckDuplcateModel> res = new List <CheckDuplcateModel>();

            foreach (var driver in drivers)
            {
                Console.WriteLine("正在处理驱动器 --> " + driver);

                string targetFolder = driver + folder;

                if (Directory.Exists(targetFolder))
                {
                    Console.WriteLine("\t找到目标文件夹 --> " + targetFolder);

                    var files = Directory.GetFiles(targetFolder);

                    Console.WriteLine("\t共有 --> " + files.Count() + " 个文件");

                    foreach (var file in files)
                    {
                        FileInfo fi            = new FileInfo(file);
                        var      fileSplitName = fi.Name.Split('-');

                        if (fileSplitName.Length >= 3)
                        {
                            var key = fileSplitName[0] + "-" + fileSplitName[1] + "-" + fileSplitName[2];

                            if (fileContainer.ContainsKey(key))
                            {
                                fileContainer[key].Add(fi);
                            }
                            else
                            {
                                fileContainer.Add(key, new List <FileInfo>()
                                {
                                    fi
                                });
                            }
                        }
                    }
                }
            }

            foreach (var key in fileContainer)
            {
                Console.WriteLine("处理 --> " + key.Key);

                if (key.Value.Count > 1)
                {
                    duplicate++;
                    total++;

                    CheckDuplcateModel cdm   = new CheckDuplcateModel();
                    List <string>      files = new List <string>();

                    cdm.ContainsFiles = files;
                    cdm.Key           = key.Key;

                    foreach (var fi in key.Value)
                    {
                        cdm.ContainsFiles.Add(fi.FullName);
                        var file     = fi.FullName;
                        var fileName = fi.Name;
                        var fileSize = fi.Length;

                        duplicateSize += fileSize;
                        totalSize     += fileSize;

                        Console.WriteLine("\t******" + file);
                    }

                    res.Add(cdm);
                }
                else
                {
                    var fi = key.Value.FirstOrDefault();

                    var file     = fi.FullName;
                    var fileName = fi.Name;
                    var fileSize = fi.Length;

                    single++;
                    total++;
                    singleSize += fi.Length;
                    totalSize  += fileSize;

                    Console.WriteLine("\t-----" + file);
                }
            }

            Console.WriteLine(string.Format("总数量 -> {0}", total));
            Console.WriteLine(string.Format("独立AV数量-> {0}", single));
            Console.WriteLine(string.Format("存在重复可能的AV数量-> {0},", duplicate));
            Console.WriteLine(string.Format("总大小-> {0},", FileSize.GetAutoSizeString(totalSize, 2)));
            Console.WriteLine(string.Format("独立AV大小-> {0},", FileSize.GetAutoSizeString(singleSize, 2)));
            Console.WriteLine(string.Format("存在重复可能的AV大小-> {0}", FileSize.GetAutoSizeString(duplicateSize, 2)));

            var logFolder = "c:\\setting\\checkresult\\";
            var logFile   = logFolder + DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + ".json";

            if (!Directory.Exists(logFolder))
            {
                Directory.CreateDirectory(logFolder);
            }


            File.Create(logFile).Close();

            StreamWriter sw = new StreamWriter(logFile);

            sw.WriteLine(JsonConvert.SerializeObject(res));
            sw.Close();

            Console.ReadKey();
        }
Esempio n. 24
0
        public JsonResult RemoveSubFolder(List <RemoveSubModel> data)
        {
            List <string> froms = new List <string>();
            List <string> tos   = new List <string>();
            int           count = 0;
            double        size  = 0;

            foreach (var d in data)
            {
                if (!string.IsNullOrEmpty(d.SrcFile) && !string.IsNullOrEmpty(d.DescFile) && System.IO.File.Exists(d.SrcFile))
                {
                    froms.Add(d.SrcFile);
                    tos.Add(d.DescFile);
                }
            }

            try
            {
                if (froms.Count == tos.Count)
                {
                    for (int i = 0; i < froms.Count; i++)
                    {
                        System.IO.File.Move(froms[i], tos[i]);
                        count++;
                        size += new FileInfo(tos[i]).Length;
                    }
                }
            }
            catch (Exception ee)
            {
                return(Json(new { success = false, msg = "移动失败" }));
            }

            return(Json(new { success = true, msg = string.Format("移动成功, 共移动{0}个文件,总大小{1}", count, FileSize.GetAutoSizeString(size, 1)) }));
        }
Esempio n. 25
0
        public static void Start()
        {
            try
            {
                sb.AppendLine(string.Format("开始扫描 {0}", DateTime.Now.ToLongTimeString()));
                //var drivers = Environment.GetLogicalDrives().Skip(1).ToList();
                List <FileInfo> fi   = new List <FileInfo>();
                List <Match>    temp = new List <Match>();

                foreach (var driver in folders)
                {
                    sb.AppendLine(string.Format("添加扫描驱动器: {0}", driver));
                    Console.WriteLine("Processing " + driver);
                    if (!string.IsNullOrEmpty(FileUtility.GetFilesRecursive(driver, formats, excludes, fi, 100)))
                    {
                        sb.AppendLine("获取文件失败");
                    }
                }

                var avs    = JavDataBaseManager.GetAllAV();
                var prefix = FileUtility.GetPrefix(avs);

                Console.WriteLine("Fi -> " + fi.Count);
                Console.WriteLine("AV -> " + avs.Count + "   Prefix -> " + prefix.Count);

                sb.AppendLine(string.Format("符合条件文件: {0}, 总共AV: {1}", fi.Count, avs.Count));

                foreach (var file in fi)
                {
                    var scan = new Scan
                    {
                        FileName = file.Name.Trim().ToUpper(),
                        Location = file.DirectoryName.Trim().ToLower(),
                        Size     = FileSize.GetAutoSizeString(file.Length, 2)
                    };

                    var possibleIDs = FileUtility.GetPossibleID(scan, prefix);

                    possibleIDs = possibleIDs.OrderByDescending(x => x.Length).Take(1).ToList();

                    sb.AppendLine(string.Format("文件{0}可能的Match有{1}", file, possibleIDs.Count));

                    Console.WriteLine("PossibleIDs -> " + possibleIDs.Count);

                    AddTemp(scan, possibleIDs, temp);
                }

                Console.WriteLine("Temp -> " + temp.Count);

                sb.AppendLine(string.Format("一共找到{0}个Match", temp.Count));

                ScanDataBaseManager.ClearMatch();

                foreach (var m in temp)
                {
                    Console.WriteLine(string.Format("Insert {0}\\{1}", m.Location, m.Name));
                    sb.AppendLine(string.Format("在库中添加Match -> {0}", m.Location));
                    ScanDataBaseManager.SaveMatch(m);
                }

                sb.AppendLine("更新数据库状态");
                ScanDataBaseManager.InsertFinish();

                var duplicateItemList = new List <DuplicateItem>();

                var tempDic = temp.GroupBy(x => x.AvID.ToLower()).ToDictionary(x => x.Key, y => y.ToList());
                foreach (var item in tempDic)
                {
                    var tempItem = new DuplicateItem();
                    tempItem.AvId    = item.Key;
                    tempItem.Matches = item.Value;

                    duplicateItemList.Add(tempItem);
                }

                var jsonRoot = "C:/AvLog/";
                var jsonStr  = JsonConvert.SerializeObject(duplicateItemList).Replace("\\", "\\\\");
                var jsonFile = "ScanJson" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + ".json";
                LogHelper.WriteLog(jsonFile, jsonStr);
                EmailHelper.SendEmail("ScanJson", "详情见附件", new[] { "*****@*****.**" }, new[] { jsonRoot + jsonFile });
            }
            catch (Exception e)
            {
                sb.AppendLine(e.ToString());
            }
            finally
            {
                sb.AppendLine(string.Format("扫描结束 {0}", DateTime.Now.ToLongTimeString()));

                //var root = "C:/AvLog/";
                //var file = "ScanAndMatch" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + "-log.txt";
                //LogHelper.WriteLog(file, sb.ToString());
                //EmailHelper.SendEmail("ScanAndMatchLog", "详情见附件", new[] { "*****@*****.**" }, new[] { root + file });
            }
        }
Esempio n. 26
0
        private void ShowWarning()
        {
            int  totalNode       = 0;
            int  totalSubNode    = 0;
            int  greenNode       = 0;
            int  grayNode        = 0;
            int  deleteNode      = 0;
            long totalDeleteSize = 0;
            Dictionary <string, TreeNode> deleteFiles = new Dictionary <string, TreeNode>();

            foreach (TreeNode node in treeView1.Nodes)
            {
                totalNode++;

                if (node.Parent == null)
                {
                    if (node.BackColor == Color.Gray)
                    {
                        grayNode++;
                    }
                    else
                    {
                        greenNode++;

                        foreach (TreeNode subNode in node.Nodes)
                        {
                            totalSubNode++;

                            if (subNode.BackColor != Color.Yellow)
                            {
                                deleteNode++;
                                totalDeleteSize += ((FileInfo)subNode.Tag).Length;
                                deleteFiles.Add(((FileInfo)subNode.Tag).FullName, subNode);
                            }
                        }
                    }
                }
            }

            var rs = MessageBox.Show(string.Format("一共 -> {0} 个节点, \r绿色节点 -> {1}, \r灰色节点 -> {2}, \r总共子节点 -> {5}, \r需要删除节点 -> {3}, \r总共删除大小 -> {4}", totalNode, greenNode, grayNode, deleteNode, FileSize.GetAutoSizeString(totalDeleteSize, 2), totalSubNode), "警告", MessageBoxButtons.YesNo);

            if (rs == DialogResult.Yes)
            {
                foreach (var file in deleteFiles)
                {
                    FileSystem.DeleteFile(file.Key, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);

                    treeView1.Nodes.Remove(file.Value);
                }
            }
        }
Esempio n. 27
0
        public void Start()
        {
            bool WriteError = false;

            byte[]   buffer       = new byte[1024 * 1024 * 50]; // 10MB buffer
            DateTime dtStart      = DateTime.Now;
            var      completeArgs = new FileCopyProgressCompleteArgs()
            {
                Src = this.Src,
                Dst = this.Dst,
            };

            if (!Directory.Exists(Path.GetDirectoryName(Dst)))
            {
                try
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(Dst));
                }
                catch (Exception exp)
                {
                    completeArgs.CompleteType = ProgressCompleteType.Error;
                    completeArgs.ErrorCode    = "500";
                    completeArgs.ErrorMessage = $"创建目标文件夹失败\r\n{exp}";
                    goto finished;
                }
            }
            OnProgressChanged?.Invoke(this, new FileCopyProgressArgs()
            {
                Src = Src, Dst = this.Dst, Progress = 0, TaskName = Src
            });
            FileStream source = null;

            try
            {
                source = new FileStream(Src, FileMode.Open, FileAccess.Read);
            }
            catch (Exception exp)
            {
                completeArgs.CompleteType = ProgressCompleteType.Error;
                completeArgs.ErrorCode    = "501";
                completeArgs.ErrorMessage = $"打开源文件失败\r\n{exp}";
                goto finished;
            }
            //using ()
            {
                long       fileLength       = source.Length;
                FileStream dest             = null;
                long       totalBytes       = 0;
                int        currentBlockSize = 0;
                try
                {
                    dest = new FileStream(Dst, FileMode.CreateNew, FileAccess.Write);
                }
                catch (Exception exp)
                {
                    completeArgs.CompleteType = ProgressCompleteType.Error;
                    completeArgs.ErrorCode    = "502";
                    completeArgs.ErrorMessage = $"创建目标文件失败\r\n{exp}";
                    source.Close();
                    goto finished;
                }

                while (!_Cancel && (currentBlockSize = source.Read(buffer, 0, buffer.Length)) > 0)
                {
                    totalBytes += currentBlockSize;
                    var persentage = totalBytes * 100 / fileLength;

                    try
                    {
                        dest.Write(buffer, 0, currentBlockSize);
                    }
                    catch (Exception exp)
                    {
                        WriteError = true;
                        completeArgs.CompleteType = ProgressCompleteType.Error;
                        completeArgs.ErrorCode    = "503";
                        completeArgs.ErrorMessage = $"复制文件失败\r\n{exp}";
                        break;
                    }

                    OnProgressChanged?.Invoke(this, new FileCopyProgressArgs()
                    {
                        Src       = Src,
                        Dst       = this.Dst,
                        Progress  = (int)persentage,
                        TaskName  = Src,
                        LeftInfo  = $"{persentage}%",
                        RightInfo = $"{FileSize.GetAutoSizeString(totalBytes)}/{FileSize.GetAutoSizeString(fileLength)}",
                    });
                }

                dest.Close();
            }

            source.Close();

            if (WriteError)
            {
                try
                {
                    File.Delete(Dst);
                }
                catch (Exception exp)
                {
                    completeArgs.CompleteType = ProgressCompleteType.Error;
                    completeArgs.ErrorCode    = "504";
                    completeArgs.ErrorMessage = $"复制文件失败\r\n{exp}";
                    goto finished;
                }
            }
            if (_Cancel)
            {
                completeArgs.CompleteType = ProgressCompleteType.Cancel;
                try
                {
                    File.Delete(Dst);
                }
                catch (Exception exp)
                {
                    completeArgs.CompleteType = ProgressCompleteType.Error;
                    completeArgs.ErrorCode    = "505";
                    completeArgs.ErrorMessage = $"删除目标文件失败\r\n{exp}";
                    goto finished;
                }
            }
            if (IsMove && !_Cancel && !WriteError)
            {
                try
                {
                    File.Delete(Src);
                }
                catch (Exception exp)
                {
                    completeArgs.CompleteType = ProgressCompleteType.Error;
                    completeArgs.ErrorCode    = "506";
                    completeArgs.ErrorMessage = $"删除源文件失败\r\n{exp}";
                    goto finished;
                }
            }
            if (!_Cancel && !WriteError)
            {
                completeArgs.CompleteType = ProgressCompleteType.Finish;
                completeArgs.ErrorCode    = "000";
                completeArgs.ErrorMessage = "操作成功";
            }
finished:
            completeArgs.UsedTime = DateTime.Now - dtStart;
            OnComplete?.Invoke(this, completeArgs);
        }
Esempio n. 28
0
        public static void GenerateBasicReport(Dictionary <string, List <FileInfo> > input, List <AV> avs, Dictionary <string, AV> match, ReportModel report)
        {
            int  totalAV    = 0;
            int  totalFile  = 0;
            int  totalMatch = 0;
            long totalSize  = 0;
            Dictionary <string, int> MatchedPrefix    = new Dictionary <string, int>();
            List <string>            prefixs          = new List <string>();
            List <string>            notMatchAnything = new List <string>();

            foreach (var av in avs)
            {
                if (av.ID.Contains("-"))
                {
                    var pre = av.ID.Split('-')[0];

                    if (!prefixs.Contains(pre))
                    {
                        prefixs.Add(pre);
                    }
                }
            }

            foreach (var av in input)
            {
                totalAV++;

                foreach (var subItem in av.Value)
                {
                    totalFile++;
                    totalSize += subItem.Length;
                }
            }

            foreach (var av in avs)
            {
                var key = (av.ID + "-" + av.Name).Replace("-1", "").Replace("-2", "").Replace("-3", "").Replace("-4", "").Replace("-5", "").Replace("-6", "").Replace("-c", "");
                var pre = av.ID.Split('-')[0];

                if (input.ContainsKey(key))
                {
                    totalMatch++;

                    if (!MatchedPrefix.ContainsKey(pre))
                    {
                        MatchedPrefix.Add(pre, 1);
                    }
                    else
                    {
                        MatchedPrefix[pre]++;
                    }

                    match.Add(key, av);
                }

                if (!prefixs.Contains(pre))
                {
                    prefixs.Add(pre);
                }
            }

            foreach (var pre in prefixs)
            {
                if (!MatchedPrefix.ContainsKey(pre))
                {
                    notMatchAnything.Add(pre);
                }
            }

            report.TotalRecord      = avs.Count;
            report.TotalAV          = totalAV;
            report.TotalFiles       = totalFile;
            report.TotalSizeStr     = FileSize.GetAutoSizeString(totalSize, 2);
            report.TotalSizeLong    = totalSize;
            report.TotalMatch       = totalMatch;
            report.TotalUnMatch     = totalAV - totalMatch;
            report.NotMatchAnyThing = notMatchAnything;
        }
Esempio n. 29
0
        static void Main(string[] args)
        {
            string folder     = "";
            string moveFolder = "";
            Dictionary <string, int>    moveRecord = new Dictionary <string, int>();
            Dictionary <string, string> remainSize = new Dictionary <string, string>();
            List <FileInfo>             fis        = new List <FileInfo>();

            while (string.IsNullOrEmpty(folder))
            {
                Console.WriteLine("输入需要整理的文件夹,按回车键继续");
                var temp = Console.ReadLine();

                try
                {
                    if (Directory.Exists(temp))
                    {
                        folder     = temp;
                        moveFolder = folder + "/movefiles/";
                        excludes.Add(moveFolder);

                        if (!Directory.Exists(moveFolder))
                        {
                            Directory.CreateDirectory(moveFolder);
                        }
                    }
                }
                catch (Exception ee)
                {
                    Console.WriteLine(ee.ToString());
                }
            }

            var status = FileUtility.GetFilesRecursive(folder, formats, excludes, fis, 200);

            if (string.IsNullOrEmpty(status))
            {
                try
                {
                    foreach (var fi in fis)
                    {
                        var n = fi.Name.Replace(fi.Extension, "");
                        var e = fi.Extension;

                        if (moveRecord.ContainsKey(fi.Name))
                        {
                            moveRecord[fi.Name]++;
                        }
                        else
                        {
                            moveRecord.Add(fi.Name, 1);
                        }

                        if (File.Exists(moveFolder + n + e))
                        {
                            n += "_" + moveRecord[fi.Name];
                        }

                        File.Move(fi.FullName, moveFolder + n + e);
                    }
                }
                catch (Exception ee)
                {
                    Console.WriteLine(ee.ToString());
                }
            }

            var subFolders = Directory.GetDirectories(folder);

            foreach (var sub in subFolders)
            {
                List <FileInfo> tempFi     = new List <FileInfo>();
                string          tempStatus = FileUtility.GetFilesRecursive(sub, formats, excludes, tempFi);
                double          tempSize   = 0D;

                if (string.IsNullOrEmpty(tempStatus))
                {
                    foreach (var fi in tempFi)
                    {
                        tempSize += fi.Length;
                    }

                    remainSize.Add(sub, FileSize.GetAutoSizeString(tempSize, 2));

                    Console.WriteLine(sub + " ===> " + FileSize.GetAutoSizeString(tempSize, 2));
                }
            }

            Console.ReadKey();
        }