Überprüfen ob Datei verändert und oder...

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    Überprüfen ob Datei verändert und oder...

    Hallöle,

    ...habe bisher nicht mit "FileSystemWatcher" gearbeitet..und soweit ich verstanden habe überwacht dieser ja nur einen Pfad/ eine Struktur...?

    Wollte mir hier Anregungen geben lassen wie ich überprüfen kann ob eine Datei verändert worden ist.
    Geht das ohne viel Performance zu verlieren,bzw. ist FileSystemWatcher Performance-Intensiv?

    Ich habe eine XML die von meinem Programm gefüllt wird.
    Jetzt möchte ich, nachdem ich die XML editiert habe, mit meinem 2. Programm (Anzeige) dem Benutzer eine Meldung bringen und die Daten neu einladen,..
    Ist FileSystemWatcher hierfür richtig?

    Grüße,
    Drahuverar
    Option Strict On!
    Hallo @Drahuverar,
    Du kannst mit einem FileSystemWatcher auch "Daten" überwachen.

    Drahuverar schrieb:

    Ich habe eine XML
    Du erstellst dir halt einfach nen FileSystemWatcher legst einen Filter auf *.xml und sagst ihm um welchen ordner es geht (.Path =), anschließend nutzt du das Event .Changed in den fall gibt dir e.FullPath alle sich geänderten Daten mit der Endung .xml du kannst den Filter natürlich auch auf eine Datei anpassen zb. test.xml

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ganz einfach gehalten.. Super.
    Danke Dir. Eine Frage allerdings:

    Die Anwendung bringt nun 2 mal die MsgBox. "Die Datei wurde verändert! (DATEINAME)"

    VB.NET-Quellcode

    1. Private Sub FileSystemWatcher1_Changed(sender As Object, e As FileSystemEventArgs) Handles FileSystemWatcher1.Changed
    2. MsgBox("Datei wurde verändert!" & vbCrLf & e.FullPath)
    3. End Sub


    Woran kann das denn liegen?
    Option Strict On!
    @Drahuverar, Das ist mit bis jetzt noch nicht passiert da ich nur den Filter .zip verwendet habe...
    Es scheint an der Speicher Methode einer .XML (.txt usw.) zu liegen.

    Ich kenne leider auf die schnelle keine schöne Lösung ._.

    Du kannst aber folgendes verwenden bis jemand einen anderen (schöneren) Lösung's Ansatz hat:

    VB.NET-Quellcode

    1. Dim last_save As String
    2. Private Sub FileSystemWatcher1_Changed(sender As Object, e As IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed
    3. If Not last_save = e.FullPath Then
    4. last_save = e.FullPath
    5. MsgBox(e.FullPath)
    6. End If
    7. End Sub

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    @Ruerte
    Okay. Danke Dir. So kann man es natürlich auch abfangen. ;)

    @ErfinderDesRades

    ErfinderDesRades schrieb:

    daran, dass sie 2 mal verändert wurde.


    Ach so. Kann ich mir die über das Event auflisten lassen, also was genau alles passiert?
    Im Grunde dachte ich -> Datei editieren und gut ist. Aber im nachhinein.. Klar, die Datei muss geöffnet werden und auch geschlossen/gespeichert. Also mehr als eine Information.
    Option Strict On!

    Drahuverar schrieb:

    Also mehr als eine Information.
    Du kannst ja mal einen test machen, indem Du selbst die zu überwachende Datei wie auch immer manipulierst, insbesondere mit separaten Open()- und Close()-Befehlen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!