Oto problem. Po pewnych powiązań, może zdarza mi się mieć ciąg jak toJak uzyskać czystą bezwzględną ścieżkę do pliku w Javie, niezależnie od systemu operacyjnego?
"C:/shared_resources/samples\\import_packages\\catalog.zip"
lub nawet tego
"C:/shared_resources/samples/subfolder/..\\import_packages\\catalog.zip"
chcę mieć jakiś kod, który będzie przekształcić taki ciąg znaków w ścieżce z jednolitymi separatorów.
Pierwsze rozwiązanie, które przychodzi na myśl, to korzystanie z new File(srcPath).getCanonicalPath()
, jednak tutaj jest trudna część. Ta metoda polega na systemie, w którym uruchamiane są testy. Jednak muszę przekazać ciąg do maszyny zdalnej (węzeł siatki Selenium z przeglądarką tam), a systemy tu i tam są odpowiednio Linux i Windows. Dlatego próba zrobienia new File("C:/shared_resources/samples\\import_packages\\catalog.zip").getCanonicalPath()
daje w rezultacie coś takiego jak "/home/username/ourproject/C:/shared_resources/samples/import_packages/catalog.zip"
. A użycie tępej wersji regex nie wydaje się zbyt dobrym rozwiązaniem.
Czy istnieje sposób, aby przycinać ścieżkę i czynić rozgraniczniki jednolite (i ewentualnie rozdzielać ..
) bez próby absolutnej absolutyzacji?
Spróbuj coś takiego .. 'f = new File File (” C:/shared_resources/samples \\ import_packages \\ catalog.zip "); \t System.out.println (f.toURI(). ToURL()); ' –