Ответ 1
Использование: URL url2 = file.toURI(). ToURL();
Почему функция java.io.File.toURL()
устарела? Мне нужно передать URL-адрес Toolkit.createImage()
, который принимает объект URL. Javadoc рекомендует использовать File.toURI().toURL()
. Однако:
C:\Documents and settings\Administrator\...
становится:
C:\Documents%20and%20settings\Administrator\...
который, очевидно, является недопустимым местоположением файла. Я нашел File.toURL() для создания URL без экранирования, однако он устарел. Хотя это работает, я боюсь использовать устаревшие функции. Какой метод, который не осуждал, делает то же самое?
EDIT: сейчас мой код выглядит следующим образом:
spriteImage1 = tkit.createImage(new File("./images/sprite1.png").getCanonicalFile().toURL());
EDIT: Мне нужно создать образ из папки вне моего .jar файла. Мне потребуется относительное местоположение ( "./images/sprite1.png" ). Метод createImage (String) генерирует исключение, когда я пытаюсь дать ему относительный путь.
Использование: URL url2 = file.toURI(). ToURL();
Он не обрабатывает специальные символы правильно, как эта ошибка.
Не проще ли использовать Toolkit.createImage(File.getPath());
?
Почему бы вам просто не использовать функцию createImage
, которая принимает вместо этого имя файла String?
Я думаю, что правильный ответ на этот вопрос - тот, который показан в этой ссылке http://www.jguru.com/faq/view.jsp?EID=1280051
Как показано в ссылке выше, правильный способ сделать это:
// Supposing f is the referenced file in code and we want to
// get an URL instance without deprecation warnings.
URL externalForm = f.toURI().toURL();
В MalformedURLException отсутствует catch, поскольку вопрос заключается в отказе метода file.toURL().
Надеется, что это поможет.
Вы можете использовать ImageIO в качестве альтернативы.
Я думаю, что вы должны написать url таким образом
C:/Документы и настройки/Администратор/...
не в этом
C:\Documents and settings\Administrator...