Act*_*ine 22 java path filepath
这是问题所在.经过一些连接,我可能碰巧有这样的字符串
"C:/shared_resources/samples\\import_packages\\catalog.zip"
Run Code Online (Sandbox Code Playgroud)
甚至这个
"C:/shared_resources/samples/subfolder/..\\import_packages\\catalog.zip"
Run Code Online (Sandbox Code Playgroud)
我想要一些代码将这种字符串转换为具有统一分隔符的路径.
想到的第一个解决方案是使用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".使用钝性正则表达式替换似乎也不是一个非常好的解决方案.
有没有办法修剪路径并使分隔符统一(并且可能解决..它)而不试图隐含地绝对化它?
Dra*_*ski 25
试试这个:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用:
Path absolutePath = path.toAbsolutePath().normalize();
Run Code Online (Sandbox Code Playgroud)
...至少消除冗余的相关部分。正如规范化()的文档提到的,如果路径的消除节点实际上是链接,则解析的文件可能会不同,或者不再可解析。
Hyd*_*oid -4
例如,这是您的路径:
String jarName = "C:/shared_resources/samples\\import_packages\\catalog.zip"
jarName.replaceAll("/", "\\");
jarName.replaceAll("..", "/");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21807 次 |
| 最近记录: |