如何在Java中组合路径?
在 C#/.NET 中,System.IO.Path.Combine()
是否有 Java 等效项?或者任何代码来实现这一点?
此静态方法将一个或多个字符串合并到一个路径中。
在 C#/.NET 中,System.IO.Path.Combine()
是否有 Java 等效项?或者任何代码来实现这一点?
此静态方法将一个或多个字符串合并到一个路径中。
而不是保持所有内容基于字符串,您应该使用一个旨在表示文件系统路径的类。
如果您使用的是Java 7或Java 8,您应该强烈考虑使用java.nio.file.Path
; 可用于将一个路径与另一个路径或字符串组合。路径
帮助程序类也很有用。例如:Path.resolve
Path path = Paths.get("foo", "bar", "baz.txt");
如果你需要满足 Java-7 之前的环境,你可以使用 java.io.File
,如下所示:
File baseDirectory = new File("foo");
File subDirectory = new File(baseDirectory, "bar");
File fileInDirectory = new File(subDirectory, "baz.txt");
如果以后希望将其恢复为字符串,可以调用 。事实上,如果你真的想模仿,你可以这样写:getPath()
Path.Combine
public static String combine(String path1, String path2)
{
File file1 = new File(path1);
File file2 = new File(file1, path2);
return file2.getPath();
}
在 Java 7 中,您应该使用解析
:
Path newPath = path.resolve(childPath);
虽然NIO2 Path类对于具有不必要的不同API的文件来说似乎有点多余,但实际上它微妙地更加优雅和健壮。
请注意,(如其他人所建议的)没有重载,并且执行 操作与 不是一回事。从 Paths.get()
文档中:Paths.get()
Path
Paths.get(path.toString(), childPath)
resolve()
请注意,虽然此方法非常方便,但使用它将意味着对默认文件系统的假定引用,并限制调用代码的实用性。因此,它不应该用于旨在灵活重用的库代码中。更灵活的替代方法是使用现有 Path 实例作为锚点,例如:
Path dir = ... Path path = dir.resolve("file");
姊妹函数是优秀的相对化
:resolve
Path childPath = path.relativize(newPath);