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?
Try with this:
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException {
Path path = Paths.get("myFile.txt");
Path absolutePath = path.toAbsolutePath();
System.out.println(absolutePath.toString());
}
}