Über die Nützlichkeit und vor allen Dingen die Häufigkeit der Nutzung dieses Snippets lässt sich wohl streiten.
Trotzdem ist es viel Arbeit, wenn man so eine Methode braucht, weswegen ich sie hier mit euch teilen möchte.
Sie prüft nicht ob der Pfad existiert, aber ob er gültig ist. Das Besondere ist eine Funktion, die ich persönlich Benutze, da ich einige Matches festgelegt habe für Umgebungs-Variablen ('[x]'). Diese Übergebe ich. Außerdem setzt die Methode einen String, der die Zulässigkeit des Pfades begründet.
List<string> EnvironmentTags = new List<string>();
EnvironmentTags.Add("[desktop]");
EnvironmentTags.Add("[appdata]");
string reason;
if(!ValidPath("[kartoffelbrei]\test", out reason, EnvironmentTags))
MessageBox.Show(reason);
// MessageBox-Text: [kartoffelbrei] ist keine gültige Umgebungsvariable.
// %Liste der erlaubten Umgebungs-Variablen%
Ungültig sind:
* Alle Pfade ohne Root (->Relative Pfade)
* Alle Pfade mit ungültigen Umgebungsvariablen(-> nicht in Liste enthalten) - Ausnahme: Wenn bereits eine gültige Umgebungsvariable vorkam
* Alle Pfade mit mehreren Umgebungsvariablen
* Alle Pfade, bei denen die Umgebungsvariable nicht am Anfang steht
* Alle Pfade, die "Illegale" Zeichen enthalten
Damit ist "[kartoffelbrei]\[desktop]" ungültig, aber "[desktop]\[kartoffelbrei]" gültig.
Wer lieber auch die in Windows verwendeten %-Zeichen nutzen möchte kann diese ja einfach ersetzen oder ein weiteren Parameter einführen ;)
Die Methode wandelt die Umgebungsvariablen nicht in ihre Entsprechungen.
Empfehlung dafür: http://dotnet-snippets.de/snippet/replace-mit-dictionary/1711Das Snippet benutzt die Hilfsmethoden:
* GetLowest
* FirstIndexOfOneOfStrings
(Beide von mir)