フォルダー内のファイルの内容を照会する方法 (LINQ) (Visual Basic)
この例では、指定したディレクトリ ツリーに含まれるすべてのファイルを照会し、個々のファイルを開いて、その内容を調べています。 同様の手法を使えば、ディレクトリ ツリーの内容に対するインデックスや逆インデックスを作成することもできます。 この例で行っているのは単純な文字列検索です。 しかし正規表現を使うと、もっと複雑なパターン マッチングを行うことができます。 詳細については、LINQ クエリと正規表現を組み合わせる (Visual Basic)」を参照してください。
例
Imports System.IO
Module Module1
'QueryContents
Public Sub Main()
' Modify this path as necessary.
Dim startFolder = "C:\Program Files (x86)\Microsoft Visual Studio 14.0"
' Take a snapshot of the folder contents.
Dim dir As New DirectoryInfo(startFolder)
Dim fileList = dir.GetFiles("*.*", SearchOption.AllDirectories)
Dim searchTerm = "Welcome"
' Search the contents of each file.
' A regular expression created with the Regex class
' could be used instead of the Contains method.
Dim queryMatchingFiles = From file In fileList _
Where file.Extension = ".html" _
Let fileText = GetFileText(file.FullName) _
Where fileText.Contains(searchTerm) _
Select file.FullName
Console.WriteLine("The term " & searchTerm & " was found in:")
' Execute the query.
For Each filename In queryMatchingFiles
Console.WriteLine(filename)
Next
' Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit")
Console.ReadKey()
End Sub
' Read the contents of the file. This is done in a separate
' function in order to handle potential file system errors.
Function GetFileText(name As String) As String
' If the file has been deleted, the right thing
' to do in this case is return an empty string.
Dim fileContents = String.Empty
' If the file has been deleted since we took
' the snapshot, ignore it and return the empty string.
If File.Exists(name) Then
fileContents = File.ReadAllText(name)
End If
Return fileContents
End Function
End Module
コードのコンパイル
Visual Basic のコンソール アプリケーション プロジェクトを作成し、コード サンプルをコピーして貼り付け、プロジェクトのプロパティでスタートアップ オブジェクトの値を調整します。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET