Board logo

标题: C# 扫描目录文件,带进度信息 [打印本页]

作者: Gin_Q    时间: 2021-5-26 15:06     标题: C# 扫描目录文件,带进度信息

本帖最后由 Gin_Q 于 2021-5-26 15:22 编辑
  1. using System;
  2. using System.Threading.Tasks;
  3. using System.IO;
  4. class Program
  5. {
  6.     static void Main()
  7.     {
  8.         string WorkPath = Directory.GetCurrentDirectory();
  9.         string ResultFileName = "文件名_大小.txt";
  10.         DirectoryInfo di = new DirectoryInfo(WorkPath);
  11.         long TotalFileNumber = 0;
  12.         Task ScanFileTask;
  13.         ScanFileTask = Task.Run(
  14.             async () =>
  15.             {
  16.                 using (StreamWriter sw = new StreamWriter(ResultFileName, false, System.Text.Encoding.Default))
  17.                 {
  18.                     foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
  19.                     {
  20.                         TotalFileNumber++;
  21.                         await sw.WriteLineAsync(String.Format("{0} : {1:0.00}MB", Path.Combine(fi.DirectoryName, fi.Name), (double)fi.Length / 1048576));
  22.                     }            
  23.                 }
  24.             }
  25.         );
  26.         Task.Run(
  27.             () =>
  28.             {
  29.                 while (ScanFileTask.Status != TaskStatus.RanToCompletion)
  30.                 {
  31.                     Console.Write("已经扫描过 {0} 个文件\r",TotalFileNumber);
  32.                     if (ScanFileTask.Status == TaskStatus.Faulted)
  33.                     {
  34.                         Console.Write("本次扫描发生了错误!{0}", ScanFileTask.Exception);
  35.                         break;
  36.                     }
  37.                 }
  38.             }
  39.         ).Wait();
  40.         Console.Write("本次扫描完成!发现 {0} 个文件",TotalFileNumber);
  41.         Console.ReadLine();
  42.     }
  43. }
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2