Java 有路径连接方法吗?

复制品:

在 java 中合并路径

我想知道 Java 中是否有这样的方法:

// this will output a/b
System.out.println(path_join("a","b"));
// a/b
System.out.println(path_join("a","/b");
146291 次浏览

这与 Java 版本7及更早的版本有关。

引用 同样问题的好答案的一句话:

如果以后需要它作为字符串返回,可以调用 getPath ()。事实上,如果你真的想模仿 Path。结合起来,你可以这样写:

public static String combine (String path1, String path2) {
File file1 = new File(path1);
File file2 = new File(file1, path2);
return file2.getPath();
}

一种方法是获取系统属性,从而为操作系统提供路径分隔符,本教程解释了如何获取这些属性。然后可以使用 file.separator使用标准字符串联接。

这是一个开始,我不认为它完全按照你的意图工作,但它至少产生了一个一致的结果。

import java.io.File;


public class Main
{
public static void main(final String[] argv)
throws Exception
{
System.out.println(pathJoin());
System.out.println(pathJoin(""));
System.out.println(pathJoin("a"));
System.out.println(pathJoin("a", "b"));
System.out.println(pathJoin("a", "b", "c"));
System.out.println(pathJoin("a", "b", "", "def"));
}


public static String pathJoin(final String ... pathElements)
{
final String path;


if(pathElements == null || pathElements.length == 0)
{
path = File.separator;
}
else
{
final StringBuilder builder;


builder = new StringBuilder();


for(final String pathElement : pathElements)
{
final String sanitizedPathElement;


// the "\\" is for Windows... you will need to come up with the
// appropriate regex for this to be portable
sanitizedPathElement = pathElement.replaceAll("\\" + File.separator, "");


if(sanitizedPathElement.length() > 0)
{
builder.append(sanitizedPathElement);
builder.append(File.separator);
}
}


path = builder.toString();
}


return (path);
}
}

试试:

String path1 = "path1";
String path2 = "path2";


String joinedPath = new File(path1, path2).toString();