Rechercher un texte dans les fichiers ( recherche récursive)

Soyez le premier à donner votre avis sur cette source.

Vue 5 278 fois - Téléchargée 1 187 fois

Description

code très simple qui traite de recherche de texte dans les fichiers : indiquer d'abord un dossier de recherche

Source / Exemple :


Imports System.Collections.ObjectModel

Public Class Form1
    Private Sub Form1_Load() Handles MyBase.Load
        Dim start_dir As String = Application.StartupPath
        start_dir = My.Computer.FileSystem.GetParentPath(start_dir)
        start_dir = My.Computer.FileSystem.GetParentPath(start_dir)
        txtDirectory.Text = start_dir
    End Sub
    Private Sub xWaitDotnet(ByVal DT As Integer) 'wait sub  in milliseconds

        Dim StartTick As Integer
        StartTick = Environment.TickCount()
        While ((Environment.TickCount() - StartTick) <= DT)
            Application.DoEvents()
            System.Threading.Thread.Sleep(1)
        End While
        'Application.DoEvents()

    End Sub
    Private Sub btnSearch_Click() Handles btnSearch.Click

        If System.IO.Directory.Exists(txtDirectory.Text) Then

        Else
            MessageBox.Show("this directory doesn't exist ", "please chhose a directory", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub

        End If

        Me.Text = "Searching ..."
        lstFiles.Items.Clear()
        xWaitDotnet(200) '<=== let time to lstFiles control to refresh   
        'Threading.Thread.Sleep(200)
        lstFiles.Items.Add("search in progress ...")

        Dim file_names As ReadOnlyCollection(Of String)
        file_names = My.Computer.FileSystem.FindInFiles(
            txtDirectory.Text,
            txtSearchFor.Text,
            True,
            FileIO.SearchOption.SearchAllSubDirectories)

        lstFiles.Items.Clear()
        For Each file_name As String In file_names
            lstFiles.Items.Add(file_name)
        Next file_name
        lstFiles.Items.Add("All done")
        Me.Text = "Find In Files "
    End Sub

    Private Sub BtnStartDirr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStartDirr.Click
        Using Dlg
            Dlg.Description = "Select a folder"
            If Dlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
                txtDirectory.Text = Dlg.SelectedPath
            End If
        End Using

    End Sub

    Private Sub txtSearchFor_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtSearchFor.KeyDown
        If e.KeyValue = Keys.Enter Then

            Call btnSearch_Click()
        End If
    End Sub

    Private Sub txtDirectory_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtDirectory.KeyDown
        If e.KeyValue = Keys.Enter Then

            Call btnSearch_Click()
        End If
    End Sub
End Class

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Bonjour,
Je cherche un utilitaire qui fasse ceci:
http://www.cppfrance.com/forum/sujet-RECHERCHE-CHAINE-CARACTERES_1633252.aspx#7
(mes descriptions sont signées JLB29P)
Il ne semble pas que votre programme le fasse, ne travaillant que sur des fichiers ASCII (?)
mais si ça vous motive, (et que c'est possible), ça peut intéresser beaucoup de gens...
Salutations,
JLB29P

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.