查询具有指定扩展名的文件 (SearchOption.AllDirectories 指递归文件夹获取所有文件)
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);
}
按扩展名对文件进行分组
// 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}");
}
}
求目录下的所有文件的总字节数
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");
对接文件夹中的文件(序列求等SequenceEqual、交集Insect、差集Except)
string pathA = @"C:\Users\bibi\Desktop\代码\异步\ConsoleApp4\Test\";
string pathB = @"C:\Users\bibi\Desktop\代码\异步\ConsoleApp4\Test\TestX\";
System.IO.DirectoryInfo dir1 = new System.IO.DirectoryInfo(pathA);
System.IO.DirectoryInfo dir2 = new System.IO.DirectoryInfo(pathB);
//使用了顶层目录SearchOption.TopDirectoryOnly,不需递归目录下的文件夹寻找文件,只要第一层文件。
IEnumerable<System.IO.FileInfo> list1 = dir1.GetFiles("*.*", SearchOption.TopDirectoryOnly);
IEnumerable<System.IO.FileInfo> list2 = dir2.GetFiles("*.*", SearchOption.TopDirectoryOnly);
//使用自定义的文件默认比较器
FileCompare myFileCompare = new FileCompare();
//判断两个序列是否相等
bool isEqualOne = list1.SequenceEqual(list2, myFileCompare);
if (isEqualOne == true)
{
Console.WriteLine("the two folders are the same");
}
else
{
Console.WriteLine("The two folders are not the same");
}
//求交集文件
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);
}
来源:https://www.cnblogs.com/bibi-feiniaoyuan/p/12405616.html