2016-06-22 1 views
0

У меня есть путь к исходному файлу, который я получаю в качестве URL-адреса файловой системы, из которого я хочу разрешить абсолютный путь двум родителям выше; желателен конечный тип как объект Path. Для этого мне нужно преобразовать его в URI, затем в Path, а затем дважды позвонить getParent().Есть ли более чистый способ представления родительского пути из URL-адреса файловой системы?

Есть уборщик способ выполнить это такое, что я могу выполнить некоторые преобразования на либо URL, URI или Path с относительной строкой ../..? Я всегда находил, что множественные вызовы getParent() поперечного путь менее интуитивно читать с первым взглядом, чем обеспечить относительный путь с ../ и т.д.

// 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

Честно говоря, это лучший способ сделать это, о котором я могу думать. – VGR

ответ

0

Если вам не нужны переменная URL в любом месте иначе, вы можете пропустить преобразование следующим образом: p = Paths.get(new URI("file:///a/b/c")).getParent().getParent();

Теперь эта следующая часть может рассматриваться как более сложная, чем это должно быть, но если вам просто нужно имя папки, вы можете сделать .getName (0) вместо двух .getParent(). Однако это не относится к корню при его распечатке и может не соответствовать вашим потребностям.

Надеюсь, это поможет.

Смежные вопросы