Aracılığıyla paylaş


Klasördeki dosyaların içeriğini sorgulama (LINQ) (Visual Basic)

Bu örnekte, belirtilen dizin ağacındaki tüm dosyaları sorgulama, her dosyayı açma ve içeriğini inceleme gösterilmektedir. Bu tür bir teknik, bir dizin ağacının içeriğinin dizinlerini veya ters dizinlerini oluşturmak için kullanılabilir. Bu örnekte basit bir dize araması gerçekleştirilir. Ancak, normal bir ifadeyle daha karmaşık desen eşleştirme türleri gerçekleştirilebilir. Daha fazla bilgi için bkz . Nasıl yapılır: LINQ Sorgularını Normal İfadelerle Birleştirme (Visual Basic).

Örnek

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

Kodu derleme

Visual Basic konsol uygulaması projesi oluşturun, kod örneğini kopyalayıp yapıştırın ve proje özelliklerinde Başlangıç nesnesi değerini ayarlayın.

Ayrıca bakınız