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; }
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)); }
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()); }
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)); }
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)); }
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(); }
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); }
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); } } } } } }
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); }
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); }
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); }
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(); } }
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(); }
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); }
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(); }
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)); }
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(); }
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(); }
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(); } }
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()); }
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()); }
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); }
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(); }
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)) })); }
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 }); } }
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); } } }
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); }
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; }
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(); }