¿Alguien sabe de alguna biblioteca de Java que podría utilizar para generar rutas canónicas (básicamente eliminar referencias anteriores).Generando una ruta canónica
Necesito algo que va a hacer lo siguiente:
Ruta Raw -> itinerario jurídico
/../foo/ -> /foo
/foo/ -> /foo
/../../../ ->/
/./foo/./ -> /foo
//foo//bar -> /foo/bar
//foo/../bar -> /bar
etc ...
En el momento en que perezosamente confiar en el uso:
new File("/", path).getCanonicalPath();
Pero esto resuelve el pat h contra el sistema de archivos real, y está sincronizado.
java.lang.Thread.State: BLOCKED (on object monitor)
at java.io.ExpiringCache.get(ExpiringCache.java:55)
- waiting to lock <0x93a0d180> (a java.io.ExpiringCache)
at java.io.UnixFileSystem.canonicalize(UnixFileSystem.java:137)
at java.io.File.getCanonicalPath(File.java:559)
Los caminos que estoy canonicalising no existen en mi sistema de archivos, por lo que sólo la lógica del método me hará bien, lo que no requiere ninguna sincronización. Estoy esperando una biblioteca bien probada en lugar de tener que escribir la mía.
¿Las rutas relativas son compatibles con la entrada? ¿O es eso una condición de error? –
¿Cuál debería ser la salida para '/ foo /../ bar /'? –
@Joachim: supongo que todas las rutas se basan en la raíz. En la mayoría de los casos, solo elimino referencias de rutas en urls. – Joel