Wie um zu überprüfen, ob eine (String -) Standort ist ein Gültiger Pfad speichern in Java?
Ich erhalte einen string aus der Benutzer, die verwendet werden sollte, da Sie einen Speicherort zum speichern des Inhalts einer Datei. Dieser string sollte genügend Informationen enthalten, wie ein Verzeichnis + Dateiname.
Meine Frage ist, wie kann ich überprüfen, ob ein vorgegebener string ein Gültiger Pfad zum speichern des Inhalts einer Datei, die (zumindest in der Theorie)?
Spielt es keine Rolle, ob die Verzeichnisse erstellt werden oder nicht, oder ob man mit den richtigen Zugang zu dem Ort selbst. Ich bin nur daran interessiert, die überprüfung der Struktur der zur Verfügung gestellten string.
Wie soll ich Vorgehen? Ich dachte über die Schaffung eines File
Objekt, dann extrahieren seiner URI
. Gibt es eine bessere Möglichkeit?
- Während nicht genau das gleiche Problem, könnten Sie gewinnen einen Einblick aus diese Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Datei.getCanonicalPath() zur Validierung gemäß den aktuellen OS-Regeln.
Haben Sie sich Apache Commons IO? Diese Bibliothek enthält verschiedene Dinge, die für die Handhabung von Pfad-Informationen, die helfen kann, z.B.
FilenameUtils.getPath(String filename)
die gibt den Pfad aus einem vollständigen Dateinamen.Einfachste: versuchen, zu retten, hört für Ausnahmen.
Das einzige mal, dass ich das machen würde etwas komplizierter werden würde, wenn die Schrift wurde aufgeschoben werden, und Sie wollen den Benutzer sein feedback jetzt.
Hier ist was ich habe, so weit:
Diese sagt mir, ob ich eine richtige Verzeichnisstruktur und ob ich auf ein Verzeichnis anstatt auf eine Datei. Ich brauche keine I/O-Zugriff.
Habe ich bemerkt, dass wenn ich die
File.createNewFile()
Methode auf einen Speicherort verweist explizit auf ein Verzeichnis (welches noch nicht vorhanden ist), Java-erstellt eine Datei ohne Erweiterung, das ist einfach falsch. Entweder es soll ein Verzeichnis anlegen, oder es werfen sollte irgendeine Art von Fehler.Auch, die Datei Konstruktoren neigen dazu, fügen Sie die aktuellen Arbeitsverzeichnis, wenn keins bereitgestellt, in das argument. Es ist nicht dokumentiert, aber keine wirklichen Schaden in meinem Fall.
Wenn jemand eine bessere Lösung, werde ich es genehmigen.
BEARBEITEN
Ich habe endlich kombiniert die oben mit der Eingabe von RealHowTo.
File.createNewFile()
erstellt eine neue Datei ohne Erweiterung, da gibt es keine Unterscheidung von ein Pfad zu einer Datei von einem in ein Verzeichnis (zumindest auf UNIX-und Windows - <95 / NT <3.51); Die Methode, ein Verzeichnis zu erstellen istFile.mkdir()
.