Query's uitvoeren op de inhoud van bestanden in een map (LINQ) (Visual Basic)
In dit voorbeeld ziet u hoe u query's uitvoert op alle bestanden in een opgegeven mapstructuur, elk bestand opent en de inhoud ervan inspecteert. Dit type techniek kan worden gebruikt voor het maken van indexen of omgekeerde indexen van de inhoud van een mapstructuur. In dit voorbeeld wordt een eenvoudige tekenreekszoekopdracht uitgevoerd. Complexere typen patroonkoppelingen kunnen echter worden uitgevoerd met een reguliere expressie. Zie Procedure: LINQ-query's combineren met reguliere expressies (Visual Basic) voor meer informatie.
Opmerking
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
De code compileren
Maak een Visual Basic-consoletoepassingsproject, kopieer en plak het codevoorbeeld en pas de waarde van het opstartobject aan in de projecteigenschappen.