Merken welche Datei schon bearbeitet wurde

meisteralex

Lieutenant
Registriert
Juni 2003
Beiträge
552
Hi Leute ich bastel gerade an einer Art Virenscanner...
mein Problem ist, das der im Hintergrund läuft, und ich alle Dateien des System immer wieder durchgehen will.
Wie merke ich mir jedoch welche Datei ich schon bearbeitet haben ? und welche sich nicht verändert haben ?
Bis jetzt hatte ich die Idee, alle md5 - Hashes der Dateien zu speichern, macht jedoch bei 100.000 Dateien die auf einen Win-System schonmal da sind (4 Byte * 100.000 = nen halbes MB).
Die immer wieder durchzugehen (halbe Millionen Datensätze) für jede Datei kostet doch bestimmt enorm viel Zeit oder ?
 
Also erstmal: Welche Sprache denn bitte??
Ich bin mir nicht wirklich sicher, aber ich meine dass die C++ STL-Container haben bei lesenden Zugriffen - dank einer Hashmap - eine Nahezu konstante Laufzeit.
Wenn du deine Liste also z.B. als map<string, string> (dateiname, md5) implementierst, dürfte es nicht allzu lange dauern nachzuschauen ob eine Datei schon eingetragen ist...
 
Eine MD5 Hashsumme muss auch erst berechnet werden. Wenn Du aber Veränderungen sicher feststellen willst kommst Du da sicher nicht drum rum.

Wenn wir aber von Windows reden, würde ich mich mal über das Win32 Shell API (IShell*) schlau machen. So aus der Erinnerung raus gibt es dort eindeutige IDs (UID oder GUIDs) für Dateien. Die müssen nicht erst berechnet werden.
Ausserdem ist es damit sicher auch möglich das Dateisystem relativ einfach zu iterieren und sich auch zu merken wo man zuletzt war.

Und das so ein Scan das System ausbremst, glaube ich schon. Entweder merkt man es an der Performance oder es dauert eben sehr lange bis ein Durchlauf fertig ist.

MfG

Arnd
 
Zuletzt bearbeitet:
vergleich doch einfach das erstellungsdatum ;)
 

Ähnliche Themen

Antworten
4
Aufrufe
1.492
Zurück
Oben