Überprüfen Sie, ob eine Zeichenfolge ein gültiger Windows-Verzeichnispfad ist
Ich versuche, um zu bestimmen, ob ein string-input, die von einem Benutzer gültig ist, darstellt, einen Pfad zu einem Ordner. Durch das gültige, ich meine richtig formatiert.
In meiner Anwendung, der Ordner stellt eine Installations-Ziel. Vorausgesetzt, dass Sie den Ordner-Pfad ist gültig, ich möchte, um zu bestimmen, wenn der Ordner existiert, und erstellt wenn es nicht.
Ich bin derzeit mit IO.Directory.Exists( String path )
. Ich finde, dass dies funktioniert gut, außer wenn der Benutzer nicht formatieren Sie die Zeichenfolge ordnungsgemäß. Wenn das passiert, gibt diese Methode false zurück, welche besagt, dass der Ordner nicht vorhanden ist. Aber das ist ein problem, weil ich nicht in der Lage sein, um den Ordner zu erstellen danach.
Aus meiner googeln fand ich einen Vorschlag, einen regulären Ausdruck zu verwenden, um zu überprüfen, ob das format korrekt ist. Ich habe keine Erfahrung mit regulären Ausdrücken, und ich wundere mich, wenn das ein brauchbarer Ansatz ist. Hier ist was ich gefunden habe:
Regex r = new Regex( @"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$" );
return r.IsMatch( path );
Reguläre Ausdruck test in Kombination mit Directory.Exists()
geben Sie mir eine gut genug Methode zu überprüfen, ob der Pfad gültig ist und ob es existiert? Ich weiß, das variiert mit dem Betriebssystem und anderen Faktoren, aber das Programm ist gezielt für Windows Benutzer nur.
InformationsquelleAutor der Frage Dinoo | 2010-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Call
Weg.GetFullPath
; es werden exceptions werfen, wenn der Pfad ungültig ist.Verbieten relative Pfade (wie
Word
), rufen SieWeg.IsPathRooted
.InformationsquelleAutor der Antwort SLaks
Ich eigentlich nicht einverstanden mit SLaks. Diese Lösung funktionierte nicht für mich. Ausnahme ist nicht geschehen, wie erwartet. Aber dieser code war für mich:
InformationsquelleAutor der Antwort Scott Shaw-Smith
Weg.GetFullPath gibt nachstehende Ausnahmen nur
Alternative Möglichkeit ist die Verwendung der folgenden :
InformationsquelleAutor der Antwort vCillusion
Verwenden Sie diesen Code
InformationsquelleAutor der Antwort user1508188
Hier ist eine Lösung, nutzt den Einsatz von Pfad.GetFullPath wie empfohlen in die Antwort von @SLaks.
In den code, ich bin auch hier, beachten Sie, dass
IsValidPath(string path)
ist so ausgelegt, dass der Anrufer nicht nicht zu befürchten Ausnahmebehandlung.Vielleicht finden Sie auch, dass die Methode, die Sie fordert, dass
TryGetFullPath(...)
auch hat Verdienst, auf seine eigene, wenn Sie wollen sicher zu versuchen, um eine absoluten Pfad.InformationsquelleAutor der Antwort DavidRR
InformationsquelleAutor der Antwort Alex Jolig
Ich habe keine Probleme mit diesem code:
Beispielsweise diese würde false zurückgeben:
Und diese würde true zurückgeben:
InformationsquelleAutor der Antwort Dao Seeker