redimensionar - ¿Java tiene un método de unión de ruta?
scale icon java (4)
Duplicado exacto:
Me gustaría saber si existe tal método en Java. Toma este fragmento como ejemplo:
// this will output a/b
System.out.println(path_join("a","b"));
// a/b
System.out.println(path_join("a","/b");
Este es un comienzo, no creo que funcione exactamente como usted pretende, pero al menos produce un resultado consistente.
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);
}
}
Para citar una buena respuesta a la misma pregunta :
Si lo quiere volver como una cadena más tarde, puede llamar a getPath (). De hecho, si realmente quieres imitar a Path.Combine, puedes escribir algo como:
public static String combine (String path1, String path2) {
File file1 = new File(path1);
File file2 = new File(file1, path2);
return file2.getPath();
}
Puedes simplemente hacer
String joinedPath = new File(path1, path2).toString();
Una forma es obtener las propiedades del sistema que le proporcionen el separador de ruta para el sistema operativo, este tutorial explica cómo hacerlo. A continuación, puede utilizar una unión de cadena estándar utilizando file.separator
.