LINQとファイルディレクトリ

録音はhttps://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/linq/linq-and-file-directories学習します

 

指定したファイル拡張子を持つクエリ(SearchOption.AllDirectoriesは、フォルダを再帰的にすべてのファイルを取得する参照します)

文字列 startFolder = @ " C:\ Users \ユーザービビ\デスクトップ\代码\异步\ ConsoleApp4 \テスト\ " 
DirectoryInfo dirを = 新しいDirectoryInfo(startFolder)。
IEnumerableを <のFileInfo>のfileList = dir.GetFiles("* " 、SearchOption.AllDirectories)。VAR FILEQUERY = からファイルのfileList
                 file.Extension ==は" .pngの" orderbyのfile.Name
                 選択したファイルを、foreachのVARの項目において
、{


                

 FILEQUERY)
    Console.WriteLineを(item.FullName)。
}

拡張グループファイルで

// ファイルシステムのスナップショットを取ります。  
文字列 startFolder = @ " C:\ Users \ユーザービビ\デスクトップ\代码\异步\ ConsoleApp4 \テスト\ " 

// 出力ラインをトリミングするWriteLineメソッドで使用されます。  
int型 trimLength = startFolder.Length。

// ファイルシステムのスナップショットを取ります。  
System.IO.DirectoryInfo DIR = 新しいSystem.IO.DirectoryInfo(startFolder)。

// このメソッドは、アプリケーションが発見権限があることを前提として  
 // 指定したパスの下のすべてのフォルダのを。  
IEnumerableを<System.IO.FileInfo>のfileList = dir.GetFiles(" *。* "、System.IO.SearchOption.AllDirectories)。

VAR queryGroupByExt = からファイルのfileListの
                      file.Extension.ToLower(によるグループファイル)ファイルグループに
                      ORDERBY fileGroup.Key
                       選択ファイルグループを。

foreachのVARのにおけるqueryGroupByExt)
{ 
    Console.WriteLineを(group.Key)。
    foreachのVARの項目グループ)
    { 
        Console.WriteLineを($ "     {item.Name} " )。
    } 
}

ディレクトリ要求内のすべてのファイルのバイト数の合計

文字列 startFolder = @ " C:\ Users \ユーザービビ\デスクトップ\代码\异步\ ConsoleApp4 \テスト\ " 

System.IO.DirectoryInfo DIR = 新しいSystem.IO.DirectoryInfo(startFolder)。
VAR。totalLength = dir.GetFiles()合計(X => x.Length)。

Console.WriteLineを(totalLength + " バイト")。

ファイルフォルダドッキング(らSequenceEqualを求めSEQ、交差点昆虫を、違いは除いて設定します)

文字列 pathA = @ " C:\ Users \ユーザービビ\デスクトップ\コード\非同期\ ConsoleApp4 \テスト\ " ;
 文字列 pathB = @ " C:\ Users \ユーザービビ\デスクトップ\コード\非同期\ ConsoleApp4 \テスト\ testX \ " 

DIR1 System.IO.DirectoryInfo = 新しい新しいSystem.IO.DirectoryInfo(pathA); 
System.IO.DirectoryInfo DIR2 = 新しい新しいSystem.IO.DirectoryInfo(pathB);
 
//再帰的なディレクトリことなく、最上位のディレクトリSearchOption.TopDirectoryOnlyを使用限り、最初のレイヤファイルとして、ファイルを見つけるために、フォルダ。 IEnumerableを
= dir1.GetFilesのList1 <ためSystem.IO.FileInfo>(" *。* " 、SearchOption.TopDirectoryOnly); IEnumerableを LIST2 = DIR2 <ためSystem.IO.FileInfo>。" *。* " 、SearchOption.TopDirectoryOnly); // 使用するデフォルトのカスタムファイルコンパレータ FileCompare myFileCompare = 新新FileCompare(); //は、2つのシーケンスが等しいかどうか BOOL isEqualOne = list1.SequenceEqual(LIST2、myFileCompare); IF(== isEqualOne trueに { Console.WriteLineを(" フォルダが2つの同じ" ); } { Console.WriteLineを(" 2つのフォルダが同じでないの" ); } // ファイルの交点 のvar queryCommonFiles =list1.Intersect(LIST2、myFileCompare)。 もし(queryCommonFiles.Any()) { Console.WriteLineを(" 次のファイルが両方のフォルダにあります。" ); foreachのVARの V におけるqueryCommonFiles) { Console.WriteLineを(v.FullName)。// アイテムが結果リストに終わる番組 } } // 求差集文件在LIST1却不在LIST2的文件 VAR queryList1Only = list1.Except(LIST2、myFileCompare)。 Console.WriteLineを(次のファイルがリスト1ではなく、LIST2のとおりです。); foreachのVARの V におけるqueryList1Only) { Console.WriteLineを(v.FullName)。 }

 

おすすめ

転載: www.cnblogs.com/bibi-feiniaoyuan/p/12405616.html