Heya,
schon wieder ich
Da ich mich vor kurzem mit ner Art "Scannern" beschäftige(recht neu im Gebiet ) kenne ich mich nicht wirklich gut aus.
Ich will jetzt in einem bestimmten Laufwerk mehrere Dateien durchsuchen und nicht nur eine.
Ich habe aus dem vb-archiv eine Klasse gefunden, die nach einer Datei sucht aber nicht nach mehreren.
Habe deshalb versucht die Datei-Namen in einem Array zu speichern jedoch ohne erfolg(oder ich habe iwo verkackt)
Hier mal die sources:
Form1:
Spoiler anzeigen
Module1:
Spoiler anzeigen
Danke in vorraus und hoffe um Hilfe !
Grüße
schon wieder ich
Da ich mich vor kurzem mit ner Art "Scannern" beschäftige(recht neu im Gebiet ) kenne ich mich nicht wirklich gut aus.
Ich will jetzt in einem bestimmten Laufwerk mehrere Dateien durchsuchen und nicht nur eine.
Ich habe aus dem vb-archiv eine Klasse gefunden, die nach einer Datei sucht aber nicht nach mehreren.
Habe deshalb versucht die Datei-Namen in einem Array zu speichern jedoch ohne erfolg(oder ich habe iwo verkackt)
Hier mal die sources:
Form1:
VB.NET-Quellcode
- Imports System.Windows.Forms
- Public Class Form1
- Inherits System.Windows.Forms.Form
- Dim f As SearchFile
- Private Sub Button1_Click(ByVal sender As System.Object, _
- ByVal e As System.EventArgs) Handles Button1.Click
- suchen()
- End Sub
- Private Sub suchen()
- Me.ListBox1.Items.Clear()
- Dim x As String = "profile.txt"
- ' Als Array war es so (enstprechend in der Module dann auch geändert)
- ' Dim x(1) As String
- ' x(0) = "profile.txt"
- ' x(1) = "version.ini"
- f = New SearchFile(x, "D:\", False)
- AddHandler f.CurrentFile, AddressOf CurrentFile
- f.Search()
- End Sub
- Private Sub CurrentFile(ByVal FileName As String, ByVal IsEqual As Boolean)
- Dim sPath As String = IO.Path.GetDirectoryName(FileName)
- If Label1.Text <> sPath Then
- Label1.Text = sPath
- Application.DoEvents()
- End If
- If IsEqual Then
- Me.ListBox1.Items.Add("Found: " + FileName)
- Application.DoEvents()
- End If
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, _
- ByVal e As System.EventArgs) Handles Button2.Click
- f.Abort()
- End Sub
- End Class
Module1:
VB.NET-Quellcode
- Imports System.IO
- Imports System.Threading
- Imports System.Environment
- Imports System.Runtime
- Imports System.Runtime.InteropServices
- Imports System.ComponentModel
- Module Module1
- Public Class SearchFile
- Inherits Object
- Private m_FileName As String
- Private m_Log As Boolean
- Private m_Drives As String
- Private m_sw As IO.StreamWriter
- Private m_Abort As Boolean
- Public Event CurrentFile(ByVal FileName As String, ByVal IsEqual As Boolean)
- ' Vorgang abbrechen
- Public Sub Abort()
- Me.m_Abort = True
- End Sub
- ' Klassen-Initialisierung
- Public Sub New(ByVal FileName As String, ByVal Drives As String, ByVal Log As Boolean)
- MyBase.New()
- Me.m_FileName = FileName
- Me.m_Log = Log
- Me.m_Drives = Drives
- End Sub
- ' Suchvorgang starten
- Public Sub Search()
- Try
- Me.m_Abort = False
- If Me.m_Log Then m_sw = New IO.StreamWriter("log.txt", False)
- For Each d As String In Me.m_Drives
- Me.Search(d)
- If Me.m_Abort Then Return
- Next
- Finally
- If Not m_sw Is Nothing Then
- m_sw.Close()
- End If
- End Try
- End Sub
- ' aktuelle Datei in LogFile speichern
- Private Sub Log(ByVal CurrentFile As String)
- If Not Me.m_Log Then Return
- m_sw.WriteLine(CurrentFile)
- End Sub
- ' Vergleich, ob es sich bei der aktuellen
- ' Datei um die gesuchte Datei handelt
- Private Sub IsEqual(ByVal CurrentItem As String)
- RaiseEvent CurrentFile(CurrentItem, _
- Me.m_FileName.ToUpper.Equals(IO.Path.GetFileName(CurrentItem).ToUpper))
- End Sub
- ' Verzeichnis durchsuchen
- Private Sub SearchFile(ByVal Dir As String)
- For Each f As String In IO.Directory.GetFiles(Dir)
- Me.Log(f)
- Me.IsEqual(f)
- If Me.m_Abort Then Return
- Next
- End Sub
- ' alle Verzeichnisse ermitteln und Suchvorgang ausführen
- Private Sub Search(ByVal Dir As String)
- Try
- SearchFile(Dir)
- For Each d As String In IO.Directory.GetDirectories(Dir)
- Try
- If Me.m_Abort Then Return
- Search(d)
- Catch ex As Exception
- Debug.WriteLine(ex.Message)
- End Try
- Next
- Catch ex As Exception
- Debug.WriteLine(ex.Message)
- End Try
- End Sub
- End Class
- End Module
Danke in vorraus und hoffe um Hilfe !
Grüße