LINQ and file directory

Record https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/linq/linq-and-file-directories learning

 

Query with the specified file extensions ( SearchOption.AllDirectories refers folders recursively get all the files)

string startFolder = @"C:\Users\bibi\Desktop\代码\异步\ConsoleApp4\Test\";
DirectoryInfo dir = new DirectoryInfo(startFolder);
IEnumerable<FileInfo> fileList = dir.GetFiles("*.*", SearchOption.AllDirectories);

var fileQuery = from file in fileList
                where file.Extension == ".png"
                orderby file.Name
                select file;

foreach(var item in fileQuery)
{
    Console.WriteLine(item.FullName);
}

By extension group files

// Take a snapshot of the file system.  
string startFolder = @"C:\Users\bibi\Desktop\代码\异步\ConsoleApp4\Test\";

// Used in WriteLine to trim output lines.  
int trimLength = startFolder.Length;

// Take a snapshot of the file system.  
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);

// This method assumes that the application has discovery permissions  
// for all folders under the specified path.  
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

var queryGroupByExt = from file in fileList
                      group file by file.Extension.ToLower() into fileGroup
                      orderby fileGroup.Key
                      select fileGroup;

foreach(var group in queryGroupByExt)
{
    Console.WriteLine(group.Key);
    foreach(var item in group)
    {
        Console.WriteLine($"    {item.Name}");
    }
}

The total number of bytes of all files in the directory request

string startFolder = @"C:\Users\bibi\Desktop\代码\异步\ConsoleApp4\Test\";

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
var totalLength = dir.GetFiles().Sum(x=>x.Length);

Console.WriteLine(totalLength+" bytes");

Docking file folder (SEQ seeking et SequenceEqual, intersection Insect, difference sets the Except)

String pathA = @ " C: \ the Users \ Bibi \ Desktop \ Code \ asynchronous \ ConsoleApp4 \ the Test \ " ;
 String pathB = @ " C: \ the Users \ Bibi \ Desktop \ Code \ asynchronous \ ConsoleApp4 \ the Test \ testX \ " ; 

dir1 System.IO.DirectoryInfo = new new System.IO.DirectoryInfo (pathA); 
System.IO.DirectoryInfo dir2 = new new System.IO.DirectoryInfo (pathB);
 
// use the top-level directory SearchOption.TopDirectoryOnly, without the recursive directory folder to find the file, as long as the first layer file. The IEnumerable
<System.IO.FileInfo for> = dir1.GetFiles List1 ( " * *. " , SearchOption.TopDirectoryOnly); the IEnumerable <System.IO.FileInfo for> List2 = dir2." . * * " , SearchOption.TopDirectoryOnly); // Use default custom file comparator FileCompare myFileCompare = new new FileCompare (); // determine whether two sequences are equal BOOL isEqualOne = list1.SequenceEqual (List2, myFileCompare); IF (== isEqualOne to true ) { Console.WriteLine ( " The Folders are TWO The Same " ); } the else { Console.WriteLine ( " of The TWO Folders are Not The Same " ); } // intersection of file var queryCommonFiles = list1.Intersect(list2, myFileCompare); if (queryCommonFiles.Any()) { Console.WriteLine("The following files are in both folders:"); foreach (var v in queryCommonFiles) { Console.WriteLine(v.FullName); //shows which items end up in result list } } //求差集文件 在list1却不在list2的文件 var queryList1Only = list1.Except(list2, myFileCompare); Console.WriteLine("The following files are in list1 but not list2:"); foreach (var v in queryList1Only) { Console.WriteLine(v.FullName); }

 

Guess you like

Origin www.cnblogs.com/bibi-feiniaoyuan/p/12405616.html