zoukankan      html  css  js  c++  java
  • 比较两个文件夹的内容

    使用LINQ比较两个文件夹内容(长度和文件名)

     1 static void CompareTwoFolders()
     2         {
     3             // Create two identical or different temporary folders 
     4             // on a local drive and change these file paths.
     5             string pathA = @"C:\TestDir";
     6             string pathB = @"C:\TestDir2";
     7 
     8             System.IO.DirectoryInfo dir1 = new System.IO.DirectoryInfo(pathA);
     9             System.IO.DirectoryInfo dir2 = new System.IO.DirectoryInfo(pathB);
    10 
    11             // Take a snapshot of the file system.
    12             IEnumerable<System.IO.FileInfo> list1 = dir1.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
    13             IEnumerable<System.IO.FileInfo> list2 = dir2.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
    14 
    15             //A custom file comparer defined below
    16             FileCompare myFileCompare = new FileCompare();
    17 
    18             bool areIdentical = list1.SequenceEqual(list2, myFileCompare);
    19 
    20             if (areIdentical == true)
    21             {
    22                 Console.WriteLine("the two folders are the same");
    23             }
    24             else
    25             {
    26                 Console.WriteLine("The two folders are not the same");
    27             }
    28 
    29             // Find the common files. It produces a sequence and doesn't 
    30             // execute until the foreach statement.
    31             var queryCommonFiles = list1.Intersect(list2, myFileCompare);
    32 
    33             if (queryCommonFiles.Count() > 0)
    34             {
    35                 Console.WriteLine("The following files are in both folders:");
    36                 foreach (var v in queryCommonFiles)
    37                 {
    38                     Console.WriteLine(v.FullName); //shows which items end up in result list
    39                 }
    40             }
    41             else
    42             {
    43                 Console.WriteLine("There are no common files in the two folders.");
    44             }
    45 
    46             // Find the set difference between the two folders.
    47             // For this example we only check one way.
    48             var queryList1Only = (from file in list1
    49                                   select file).Except(list2, myFileCompare);
    50 
    51             Console.WriteLine("The following files are in list1 but not list2:");
    52             foreach (var v in queryList1Only)
    53             {
    54                 Console.WriteLine(v.FullName);
    55             }
    56 
    57         }
    58 
    59         class FileCompare : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo>
    60         {
    61             public FileCompare() { }
    62 
    63             public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2)
    64             {
    65                 return (f1.FullName == f2.FullName &&
    66                         f1.Length == f2.Length);
    67             }
    68 
    69             public int GetHashCode(System.IO.FileInfo fi)
    70             {
    71                 string s = String.Format("{0}{1}", fi.Name, fi.Length);
    72                 return s.GetHashCode();
    73             }
    74         }
  • 相关阅读:
    Centos7上安装docker
    centos如何查看某一目录下每个目录或文件占用磁盘空间大小
    大学毕设参考文献在什么网站搜索
    Spring MVC使用jstl 标签c:forEach 遍历输出双层嵌套List的数据
    JQuery选择器通过click事件获取当前点击对象的id,name,value属性
    利用ajax和servlet实现前后端数据交互(json)
    Java软件工程的弹幕调试原则
    周周总结——时时更新(第4学期,第8周)
    团队软件的NABCD——星遇
    周周总结——时时更新(第4学期,第7周)
  • 原文地址:https://www.cnblogs.com/dingshouqing/p/2392228.html
Copyright © 2011-2022 走看看