LINQ とファイル ディレクトリ (Visual Basic)

多くのファイル システム操作は基本的にクエリであるため、LINQ での使用に最適です。

ここで示すクエリは破壊的ではないことに注意してください。 元のファイルやフォルダーの内容が変更されることはありません。 これは、クエリは副作用を引き起こすべきではないという規則に従っています。 一般に、参照元データを変更するコード (create、update、または delete の各演算子を実行するクエリなど) は、単にデータを照会するだけのコードとは分離する必要があります。

このセクションでは、以下のトピックについて説明します。

方法: 指定された属性または名前のファイルを照会する (Visual Basic)
FileInfo オブジェクトで 1 つ以上のプロパティを調べ、ファイルを検索する方法を示します。

方法: 拡張機能でファイルをグループ化する (LINQ) (Visual Basic)
ファイル名拡張子に基づいて、FileInfo オブジェクトのグループを返す方法を示します。

方法: 一連のフォルダーの合計バイト数を照会する (LINQ) (Visual Basic)
指定したディレクトリ ツリー内のすべてのファイルの合計バイト数を返す方法を示します。

方法: 2 つのフォルダーの内容を比較する (LINQ) (Visual Basic)
指定した 2 つのフォルダーに存在するファイルをすべて返す方法と、一方のフォルダーにのみ存在し、もう一方には存在しないファイルをすべて返す方法を示します。

方法: ディレクトリ ツリー内で最もサイズの大きいファイルを照会する (LINQ) (Visual Basic)
ディレクトリ ツリーで、最もサイズの大きいファイルまたは最もサイズの小さいファイル、あるいは指定した数のファイルを返す方法を示します。

方法: ディレクトリツリーで重複するファイルを照会する (LINQ) (Visual Basic)
指定したディレクトリ ツリーの複数の場所に出現するすべてのファイル名をグループ化する方法を示します。 また、カスタム比較演算子に基づいて、より複雑な比較を実行する方法も示します。

フォルダー内のファイルの内容を照会する方法 (LINQ) (Visual Basic)
ツリー内のフォルダーを反復処理し、各ファイルを開き、ファイルの内容を照会する方法を示します。

コメント

ファイル システムの内容を正確に表し、例外を適切に処理するデータ ソースを作成する手順は複雑になります。 ここに示す例では、指定したルート フォルダーおよびすべてのサブフォルダーの下にある、すべてのファイルを表す FileInfo オブジェクトのスナップショット コレクションを作成します。 各 FileInfo の実際の状態は、クエリの実行の開始時点から終了時点までの間に変化する可能性があります。 たとえば、データ ソースとして使用する FileInfo オブジェクトの一覧を作成したとします。 クエリで Length プロパティにアクセスしようとすると、FileInfo オブジェクトがファイル システムにアクセスして Length の値を更新しようとします。 ファイルがもう存在しない場合は、ファイル システムを直接照会していなくても、クエリから FileNotFoundException が返されます。 ここで示すクエリの中には、状況により、このような特定の例外を処理する個別のメソッドを使用しているものがあります。 別の方法として、FileSystemWatcher を使用して、データ ソースを動的に更新して常に最新の状態に保つこともできます。

関連項目