2014-10-11 3 views
0

Я хотел URL ресурса в следующей формеJava getResource() неожиданный путь

C:/Users /.../ сборки/классы/джем/lena1.png

Для достижения этой цели я написал следующий код

System.out.println(getClass().getResource("lena1.png").getPath()); 

но он возвращает

/C:/Users/.../build/classes/jam/lena1.png

Почему дополнительный прямой слэш, представший перед URL?

+0

if System.out.println (getClass(). GetResource ("lena1.png"). ToString()); записывается тогда: файл:/C:/Users /.../ build/classes/jam/lena1.png – KiKMak

+0

Я получаю ресурс, но метод getPath() возвращает URL-адрес с дополнительной косой чертой – KiKMak

ответ

3

Regard, что Class.getResource() возвращает URL и URL-адрес не только пути к файлам: URL-адрес включает протокол, хост, порт и путь. И он имеет свои собственные обозначения и формат.

Что вы получаете в своем примере: путь , и путь всегда начинается с косой черты, согласно RFC2396.

Если вы хотите получить файл с URL-адресом, вы можете использовать new File(url.toURI()) ... что совпадающий URL-адрес на самом деле ссылается на локальный путь к файлу.

+0

Справа. Я обновил его. Благодарю. –

+0

Спасибо за ваше предложение, но url.toURI() не работает, он дает тот же результат. – KiKMak

+0

Я настаиваю: во-первых, получите URI из URL с _url.toURI() _, затем создайте объект File, передающий URI в качестве параметра. Затем, если вы хотите абсолютный локальный путь, вы можете получить его с помощью _file.getAbsolutePath() _. –

-1

Ведущая косая черта для обозначения корня пути к классам. Попробуйте это: System.out.println(getClass().getResource("/lena1.png").getPath());

+0

Корень CLASSPATH не является C: /, и ваш предложенный код также неверен: он должен быть «/jam/lena1.png». – EJP

-1

использовать этот

String s = (getClass().getResource("lena1.png").getPath()).substring(1); 
System.out.println(s); 
+2

Это удалит косую черту, но не уточняет, почему она там. – Tom

1

Потому что это URL, а не имя файла.

Вопрос сам по себе нечетный. Как вас интересует путь к URL-адресу?

+0

Мне нужен путь для его использования во внешней библиотеке. – KiKMak