Here's the problem. After some concatenations I may happen to have a string like this
"C:/shared_resources/samples\\import_packages\\catalog.zip"
or even this
"C:/shared_resources/samples/subfolder/..\\import_packages\\catalog.zip"
I want to have some code that will convert such string into a path with uniform separators.
The first solution that comes to mind is using new File(srcPath).getCanonicalPath()
, however here's the tricky part. This method relies on the system where the tests are invoked. However I need to pass the string to a remote machine (Selenium Grid node with a browser there), and the systems here and there are Linux and Windows respectively. Therefore trying to do new File("C:/shared_resources/samples\\import_packages\\catalog.zip").getCanonicalPath()
results in something like "/home/username/ourproject/C:/shared_resources/samples/import_packages/catalog.zip"
. And using blunt regex replacement doesn't seem a very good solution too.
Is there a way just to prune the path and make delimiters uniform (and possibly resolving ..
's) without trying to implicitly absolutize it?
File f = new File("C:/shared_resources/samples\\import_packages\\catalog.zip"); System.out.println(f.toURI().toURL());
– Dissuade