2016-06-22 3 views
0

Ich habe einen Quellpfad, den ich als eine Dateisystem-URL empfange, von der ich auf einen absoluten Pfad zwei Eltern oben auflösen möchte; der letzte Typ als Path Objekt ist erwünscht. Um dies zu tun, muss ich es in eine URI, dann in eine Path konvertieren, und dann getParent() darauf zweimal aufrufen.Gibt es eine sauberere Möglichkeit, einen übergeordneten Pfad von einer Dateisystem-URL darzustellen?

Gibt es einen sauberen Weg, dies so auszuführen, dass ich auf eine Transformation durchführen kann entweder die URL, URI oder Path mit einer relativen Zeichenfolge ../..? Ich habe immer gefunden, dass mehrere Aufrufe von getParent() einen Weg quer weniger intuitiv zu sein auf einem Blick zu lesen, als mit ../ einen relativen Pfad zur Verfügung zu stellen, usw.

// Example file system path as a URL 
URL u = new URL("file:///a/b/c"); 

// Must convert to URI and then call 'getParent()' twice 
Path p = Paths.get(u.toURI()).getParent().getParent(); 
+0

Ehrlich gesagt, das ist der beste Weg, um es mir zu sagen. – VGR

Antwort

0

Wenn Sie das URL-Variable nicht brauchen überall sonst, dann können Sie die Konvertierung wie so überspringen: p = Paths.get(new URI("file:///a/b/c")).getParent().getParent();

Nun, der nächste Teil als komplizierter werden könnte gesehen, als es sein muss, aber wenn Sie nur die Ordnernamen benötigen, könnten Sie eine .getName tun (0) anstelle der beiden .getParent(). Dies beinhaltet jedoch nicht den Stamm, wenn Sie es ausdrucken, und es könnte nicht Ihren Bedürfnissen entsprechen.

Ich hoffe, das hilft.

Verwandte Themen