Laden...

Erweiterte Dateisuche

Erstellt von TheBrainiac vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.071 Views
TheBrainiac Themenstarter:in
795 Beiträge seit 2006
vor 13 Jahren
Erweiterte Dateisuche

Beschreibung:

Da mir eine Klasse gefehlt hat, die den Computer nach Dateien mit bestimmten Eigenschaften durchsucht, habe ich die unten beschriebenen Klasse entwickelt.

Beispiel:
Suche im Benutzerprofil nach Textdateien mit mindestens einer Zahl im Namen, die größer sind als 1 kB und die nicht die Worte "Sparta" oder "Carthago" enthalten!


var fs = new FileSearch(SpecialSource.UserProfile);

fs.Filter = Filters.And(
    Filters.AllowExtensions(".txt"),
    Filters.Regex(@"\d+"),
    Filters.Size(1024, SizeFilterMode.MoreOrEqual),
    Filters.Not(
        Filters.Or(
            Filters.Regex("Sparta"),
            Filters.Regex("Carthago")
        )
    )
);

TuWas(fs.Find());

Dokumentation:

// Tritt auf, wenn ein Fehler beim Beziehen der Dateien bzw. Ordner in einer Quelle auftritt (Unauthorisierter Zugriff / Gerät nicht bereit)        
public event Action<FileSearch, DirectoryInfo, Exception> Error;

// Der Filter, der die Suchergebnisse einschränkt
public IFilter Filter;

// Die Quellen
public Source[] Sources;

// Fügt Quellen hinzu
public void AddSources(params Source[] sources);

// Fügt Spezial-Quellen hinzu
public void AddSources(params SpecialSource[] sources);

// Führt die eigentliche Suche aus
public IEnumerable<FileInfo> Find();

Alle Source-Parameter können auch als string angegeben werden - die Umwandlung findet implizit statt.

// Alles ist erlaubt
public static IFilter Everything;

// Nichts ist erlaubt
public static IFilter Nothing;

// Nur gültige Matches des Regex sind erlaubt
public static IFilter Regex(Regex regex);

// Nur Dateien mit den angegebenen Erweiterungen sind erlaubt
public static IFilter AllowExtensions(params string[] extensions);

// Dateien mit den angegebenen Erweiterungen werden aussortiert
public static IFilter ExcludeExtensions(params string[] extensions);

// Nur Dateien, die die angegebenen Größen-Eigenschaften erfüllen, sind erlaubt
public static IFilter Size(long size, SizeFilterMode mode);

// Nur Dateien, die alle übergebenen Filter erfolgreich durchlaufen, sind erlaubt
public static IFilter And(params IFilter[] filters);

// Nur Dateien, die mindestens einen übergeben Filter erfolgreich durchlaufen, sind erlaubt
public static IFilter Or(params IFilter[] filters);

// Nur Dateien, die den übergebenen Filter nicht erfolgreich durchlaufen, sind erlaubt
public static IFilter Not(IFilter filter);

Zusätzlich können über das Interface IFilter benutzerdefinierte Filter mit eingebunden werden.

Die (bis jetzt) enthaltenen SpecialSources sind:*AllDrives: Sucht auf allen verfügbaren Laufwerken *LocalHardDisks: Sucht auf allen lokalen Festplatten *LocalRemovableDisks: Sucht auf allen lokalen Wechseldatenträgern *NetworkDrives: Sucht auf allen verfügbaren Netzlaufwerken *OpticalDrives: Sucht auf allen verfügbaren optischen Laufwerken *SystemDrive: Sucht im System-Laufwerk (Meinstens C:\) *UserProfile: Sucht im Benutzerprofil der angemeldeten Benutzers (Win7: C:\Users\UserName\)

Schlagwörter: file search datei suche size größe extension extention erweiterung regex combine kombiniert filter

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`