我该如何在Java 7中从String
对象创建一个java.nio.file.Path
对象?
即:
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
其中?
是使用textPath
的缺失代码。
我该如何在Java 7中从String
对象创建一个java.nio.file.Path
对象?
即:
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
其中?
是使用textPath
的缺失代码。
从Javadocs中... http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
Path p1 = Paths.get("/tmp/foo");
与
相同。
Path p4 = FileSystems.getDefault().getPath("/tmp/foo");
Path p3 = Paths.get(URI.create("file:///Users/joe/FileTest.java"));
Path p5 = Paths.get(System.getProperty("user.home"),"logs", "foo.log");
在Windows中,创建文件C:\joe\logs\foo.log(假设用户主目录为C:\joe)
在Unix中,创建文件/u/joe/logs/foo.log(假设用户主目录为/u/joe)
File.separator
代替关注当前操作系统。例如,"/tmp/foo"
就是File.separator+"tmp"+File.separator+"foo"
。 - mat_boy如果可能的话,我建议直接从路径元素创建Path
:
Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"
即使问题涉及Java 7,我认为了解从Java 11开始,Path
类中有一个静态方法可以直接执行此操作是有价值的:
将所有路径放在一个字符串中:
Path.of("/tmp/foo");
将路径拆分为多个字符串:
Path.of("/tmp","foo");
Paths.get
。 - DodgyCodeException
Path.get()
是跨平台的吗?也就是说,Path.get("lib","p2")
在 Windows 中会被解释为lib\p2
,在 Linux 中则会被解释为lib/p2
。 - Kasun Siyambalapitiya