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 SpecialSource
s 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