Ich frage mich nur: Ich suche nach einer Möglichkeit zu überprüfen, ob ein bestimmter Pfad gültig ist. (Anmerkung: Ich will nicht , um zu überprüfen , ob eine Datei vorhanden ist Ich möchte nur den Nachweis der Gültigkeit des Wegs - Also , wenn eine Datei konnte existiert möglicherweise an der Stelle!) .
Das Problem ist, dass ich in der .NET-API nichts finden kann. Aufgrund der vielen Formate und Speicherorte, die Windows unterstützt, würde ich lieber etwas MS-natives verwenden.
Da sollte die Funktion in der Lage sein, zu überprüfen gegen:
- Relative Pfade (./)
- Absolute Pfade (c: \ tmp)
- UNC-Pfade (\ some-pc \ c $)
- NTFS-Einschränkungen wie der vollständige Pfad 1024 Zeichen - Wenn ich mich nicht irre, überschreitet der Pfad eine Datei, auf die für viele interne Windows-Funktionen nicht zugegriffen werden kann. Das Umbenennen mit dem Explorer funktioniert weiterhin
- Volume-GUID-Pfade: "\? \ Volume {GUID} \ somefile.foo
Hat jemand eine solche Funktion?
Antworten:
Versuchen Sie
Uri.IsWellFormedUriString()
:Die Zeichenfolge wird nicht korrekt maskiert.
Die Zeichenfolge ist eine absolute Uri, die eine implizite Datei Uri darstellt.
Die Zeichenfolge ist eine absolute URI, bei der ein Schrägstrich vor dem Pfad fehlt.
Die Zeichenfolge enthält nicht entkoppelte Schrägstriche, auch wenn sie als Schrägstriche behandelt werden.
Die Zeichenfolge stellt ein hierarchisches absolutes Uri dar und enthält kein ": //".
Der Parser für das Uri.Scheme zeigt an, dass die ursprüngliche Zeichenfolge nicht gut geformt war.
quelle
@"foo\bar\baz"
, was ein vollkommen gültiger relativer Pfad ist ...Oder verwenden Sie die FileInfo wie in In C # vorgeschlagen. Überprüfen Sie, ob der Dateiname möglicherweise gültig ist (nicht, dass er vorhanden ist) .
quelle
quelle
Ich hatte keine Probleme mit dem folgenden Code. (Relative Pfade müssen mit '/' oder '\' beginnen).
Zum Beispiel würden diese false zurückgeben:
Und diese würden wahr zurückkehren:
quelle
Sie können diesen Code ausprobieren:
Ich bin nicht sicher, ob es alle Fälle abdeckt ...
quelle
Am nächsten bin ich gekommen, indem ich versucht habe, es zu erschaffen und zu sehen, ob es gelingt.
quelle
Hier gibt es viele gute Lösungen, aber da keiner von ihnen prüft, ob der Pfad in einem vorhandenen Laufwerk verwurzelt ist, ist hier ein anderer:
Diese Lösung berücksichtigt keine relativen Pfade.
quelle
Holen Sie sich die ungültigen Zeichen von
System.IO.Path.GetInvalidPathChars();
und prüfen Sie, ob Ihre Zeichenfolge (Verzeichnispfad) diese enthält oder nicht.quelle
Directory.Exists?
quelle
quelle
Einfach einfach benutzen
quelle
Sie können versuchen, Path.IsPathRooted () in Kombination mit Path.GetInvalidFileNameChars () zu verwenden, um sicherzustellen, dass der Pfad zur Hälfte in Ordnung ist.
quelle