在Java7中从字符串创建路径


Answers:


454

您可以使用Paths该类:

Path path = Paths.get(textPath);

...当然,假设您要使用默认文件系统。


有没有办法使用相对路径和完整路径?即给出相对于项目或exe所在的路径?
shinzou

@kuhaku:我认为您应该提出一个新问题,详细说明您要尝试做的事情和尝试过的事情。
乔恩·斯基特

@JonSkeet Path.get()是平台独立的吗?这意味着Path.get("lib","p2") 将与lib\p2Windows和lib/p2Linux中一样
Kasun Siyambalapitiya

1
@KasunSiyambalapitiya:是的,应该没问题。
Jon Skeet

1
@JonSkeet Paths.get(“ / opt / path /”); 其返回为“ \ opt \ path \”。能否请您提供解决方案。
死于

18

从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)


6
我建议使用File.separarator而不是照顾当前的操作系统。EG "/tmp/foo"File.separator+"tmp"+File.separator+"foo"
mat_boy

我猜它不会创建实际的文件,但是会创建一个Path对象。您可以使用Files.createFile(logfilePath)使用path对象在磁盘上创建实际文件。
-Q先生

12

如果可能的话,我建议Path直接从path元素创建:

Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"

这个平台独立吗?
Kasun Siyambalapitiya

7

即使是关于Java 7的问题,我也认为从Java 11开始知道Path类中有一个静态方法可以立即执行此操作,这也增加了价值:

将所有路径都放在一个String中:

Path.of("/tmp/foo");

路径分为几个字符串:

Path.of("/tmp","foo");


2
最后他们提供了这种方法!
mat_boy

@mat_boy是的,但这没什么大不了的。该方法在Java 7中已经存在,但以前称为Paths.get
DodgyCodeException
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.