Прием и путей к файлам и URL в Java - PullRequest
1 голос
/ 23 октября 2011

Существует ли метод, который бы принимал следующие пути и возвращал соответствующий URI:

test.xml // File in CWD
./test.xml // The same
../test.xml // File in parent directory
/etc/test.xml // Absolute path
file:///etc/test.xml // Full URL
http://example.com/test.xml // URL for http

В настоящее время все, что я могу думать, это анализировать как URL (URL.create) и, если он не удается, попытаться попытатьсяразобрать его как файл / путь.

Ответы [ 3 ]

1 голос
/ 23 октября 2011

Вы можете создать URI для каждого из указанных вами ресурсов следующим образом:

public class T {

    public static void main(final String[] args) throws URISyntaxException {
        System.out.println(new URI("test.xml"));
        System.out.println(new URI("./test.xml"));
        System.out.println(new URI("../test.xml"));
        System.out.println(new URI("/etc/test.xml"));
        System.out.println(new URI("file:///etc/test.xml"));
        System.out.println(new URI("http://example.com/test.xml"));

    }

}

Кроме того, вы можете получить URL с помощью метода "toURL ()", но это только в случаеURI является абсолютным.

1 голос
/ 23 октября 2011

Если вы хотите использовать эти URI s, например, в конструкторе File, вам нужно указать base URI для относительных путей.Вы можете сделать это с URI.resolve .

URI basePath = new URI("file:///base_dir/");
URI uri = basePath.resolve("foo.txt");

System.out.println(new File(uri));
1 голос
/ 23 октября 2011

Используйте URI , а не URL.

Это может или не может быть тем, что вы на самом деле хотите , однако, в зависимости от того, что вам нужно сделать с результатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...