Comment obtenir un chemin de fichier absolu propre dans Java quel que soit le système d'exploitation?

Voici le problème. Après quelques enchaînements je peux arriver à avoir une chaîne comme celle-ci

"C:/shared_resources/samples\\import_packages\\catalog.zip"

ou même ce

"C:/shared_resources/samples/subfolder/..\\import_packages\\catalog.zip"

Je veux avoir un code qui va transformer la chaîne dans un chemin avec des séparateurs.

La première solution qui vient à l'esprit est à l'aide de new File(srcPath).getCanonicalPath()cependant, ici, la partie la plus délicate. Cette méthode repose sur le système, où les tests sont invoqués. Cependant j'ai besoin de passer la chaîne à une machine distante (Sélénium noeud de la Grille avec un navigateur), et les systèmes d'ici et il y a Linux et Windows, respectivement. Donc essayer de faire new File("C:/shared_resources/samples\\import_packages\\catalog.zip").getCanonicalPath() résultats dans quelque chose comme "/home/username/ourproject/C:/shared_resources/samples/import_packages/catalog.zip". Et à l'aide de blunt regex de remplacement ne semble pas une très bonne solution aussi.

Est-il un moyen juste pour tailler le chemin et de faire des délimiteurs uniforme (et éventuellement la résolution de ..'s) sans essayer de implicitement absolutiser?

source d'informationauteur Actine