.Net: Wie überprüfe ich nach illegalen Zeichen in einem Pfad?
Gibt es eine Möglichkeit zu überprüfen, ob ein String gemeint ist, für einen Pfad enthält ungültige Zeichen .Net? Ich weiß, ich könnte iterieren über jedes Zeichen im Pfad.InvalidPathChars um zu sehen, ob mein String enthalten, aber ich würde lieber eine einfache, vielleicht mehr formale Lösung.
Gibt es die?
Ich habe festgestellt, ich bekomme immer noch eine Ausnahme, wenn ich nur check gegen Bekommen
Update:
Habe ich gefunden GetInvalidPathChars deckt nicht alle ungültigen Pfad Zeichen. GetInvalidFileNameChars hat 5 mehr, einschließlich'?", die ich habe über kommen. Ich werde wechseln, ich werde berichten, wenn es auch erweist sich als unzureichend.
Update 2:
GetInvalidFileNameChars ist definitiv nicht das, was ich will. Es enthält ':', denen jeder absolute Pfad wird zu enthalten ("C:\whatever"). Ich denke, ich werde einfach zu haben, um mit GetInvalidPathChars, nachdem alle, und fügen Sie"? " und alle anderen Zeichen, die bereiten mir Probleme, wie Sie kommen. Bessere Lösungen willkommen.
InformationsquelleAutor der Frage Mike Pateras | 2010-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
InvalidPathChars ist veraltet. Verwenden GetInvalidPathChars() statt:
Edit: Etwas länger, aber die Griffe Weg vs-Datei ungültige Zeichen in einer Funktion:
InformationsquelleAutor der Antwort Jeremy Bell
Vorsichtig sein, wenn man sich auf
Path.GetInvalidFileNameChars
werden, die möglicherweise nicht so zuverlässig wie man denkt. Beachten Sie die folgende Bemerkung in der MSDN-Dokumentation aufWeg.GetInvalidFileNameChars
:Ist es nicht besser mit
Weg.GetInvalidPathChars
Methode. Es enthält die genau die gleiche Bemerkung.InformationsquelleAutor der Antwort René
Ist es wahrscheinlich zu spät für dich, aber vielleicht helfen Sie jemand anderes.
Ich Stand vor dem gleichen Problem und benötigte eine zuverlässige Art und Weise zu bereinigen, einen Pfad.
Hier ist was ich landete mit, in 3 Schritten:
Schritt 1: Benutzerdefinierte Reinigung.
Schritt 2: Überprüfen Sie alle ungültigen Zeichen noch nicht entfernt.
Einen eine zusätzliche überprüfung Schritt, ich benutze die
Path.GetInvalidPathChars()
Methode oben gepostet um zu erkennen, potenzielle ungültige Zeichen noch nicht entfernt.Schritt 3: Reinigen Sie alle Sonderzeichen erkannt in Schritt 2.
Und schließlich habe ich diese Methode als letzten Schritt reinigen Sie was übrig.
(aus So entfernen Sie ungültige Zeichen aus Pfad und Dateinamen?):
Logge ich alle ungültigen Zeichen, die nicht gereinigt sind, ist der erste Schritt. Ich wähle diesen Weg zu gehen, zu verbessern, meine eigene Methode, sobald ein 'Leck' erkannt wird. Ich kann nicht Sie verlassen sich auf die
Path.GetInvalidFileNameChars()
aufgrund der folgenden Aussage oben berichtet (aus MSDN):Kann es nicht die ideale Lösung, aber unter den gegebenen Kontext meiner Anwendung und der Ebene der Zuverlässigkeit erforderlich, ist dies die beste Lösung, die ich gefunden.
InformationsquelleAutor der Antwort andrew
Ich landete Kreditaufnahme und die Kombination von ein paar interne .NET-Implementierungen zu kommen mit eine performante Methode:
Dann habe ich es so aber auch umhüllt es bis in einen try/catch-block für die Sicherheit:
InformationsquelleAutor der Antwort Randy Burden