Есть ли у Java метод соединения пути? [дубликат]


Точный Дубликат:

объединить пути в java

Я хотел бы знать, есть ли такой метод в Java. Возьмите этот фрагмент в качестве примера:

// this will output a/b
System.out.println(path_join("a","b"));
// a/b 
System.out.println(path_join("a","/b");
4 129

4 ответа:

Это касается версий Java 7 и более ранних.

цитировать хороший ответ на тот же вопрос:

Если вы хотите вернуть его в виде строки позже, вы можете вызвать getPath(). Действительно, если вы действительно хотели имитировать путь.Объединить, вы могли бы просто написать что-то вроде:

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

вы можете просто сделать

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

один из способов-получить Свойства системы, которые дают вам разделитель пути для операционной системы, в этом уроке объясняет, как. Затем вы можете использовать стандартное строковое соединение с помощью 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);
    }
}