【发布时间】:2013-04-12 19:36:50
【问题描述】:
这就是问题所在。经过一些连接后,我可能碰巧有一个这样的字符串
"C:/shared_resources/samples\\import_packages\\catalog.zip"
甚至这个
"C:/shared_resources/samples/subfolder/..\\import_packages\\catalog.zip"
我想要一些代码,将此类字符串转换为具有统一分隔符的路径。
想到的第一个解决方案是使用new File(srcPath).getCanonicalPath(),但这是棘手的部分。此方法依赖于调用测试的系统。但是我需要将字符串传递给远程机器(Selenium Grid 节点,那里有浏览器),这里和那里的系统分别是 Linux 和 Windows。因此尝试执行new File("C:/shared_resources/samples\\import_packages\\catalog.zip").getCanonicalPath() 会导致类似"/home/username/ourproject/C:/shared_resources/samples/import_packages/catalog.zip" 的结果。而且使用钝的正则表达式替换似乎也不是一个很好的解决方案。
有没有办法只修剪路径并使分隔符统一(并可能解析..'s)而不试图隐式绝对化它?
【问题讨论】:
-
试试类似..
File f = new File("C:/shared_resources/samples\\import_packages\\catalog.zip"); System.out.println(f.toURI().toURL());