String someIconUri = "C:\Users\MyUser\someIcon.jpeg";
Нет, это не «какой-то значок URI», это вообще не допустимый URI. Если подумать, это даже не компилируемое утверждение, поскольку String
содержит недопустимые экранирующие символы!
Это может быть что-то вроде ..
String someIconUri = "file:///C:/Users/MyUser/someIcon.jpeg";
Но тогда getResource()
не нужен и не полезен, так как он только найдет ресурсы на пути к классам во время выполнения. Просто создайте URL
прямо из String
.
Но это на самом деле только «часть ответа». Вот почему.
В этом контексте существуют два основных типа ресурсов. Ресурсы приложения и (если не сказать больше) Ресурсы пользователя.
Ресурсы приложений.
Эти ресурсы могут состоять из таких вещей, как значки рамок, значки кнопок и меню (Action
значки), значки вкладок. Файлы справки (и связанные изображения), заставки ..
Они должны быть добавлены в отдельный Jar (чаще всего) и добавлены в путь к классам приложения во время выполнения (используя манифест или другие средства, такие как элемент applet или файл JNLP).
Ресурсы приложения должны быть доступны по URL, который можно получить с помощью getResource()
:
URL iconUrl = this.getClass().getResource("/icons/copy.jpg");
Ресурсы пользователя.
Пользователь хочет открыть (отредактировать / распечатать) существующий текстовый документ, сделать анимированный GIF из кадров изображения, отредактировать изображение в своей файловой системе.
Для ресурсов этого типа (и при условии, что приложение является доверенным или не имеет менеджера безопасности), предложите пользователю JFileChooser
. Он вернет определенный, существующий File
или более (в зависимости от того, как настроен и использован).
В этом случае, никогда не конвертируйте File
во что-либо еще, просто используйте экземпляр (ы) напрямую.
Большинство методов, которые получают данные из ресурсов (стоит упомянуть), принимают File
URL
или InputStream
.
Последнее полезно для чего-то, сгенерированного в памяти или полученного из таких источников, как сокеты или объект JNLP API FileContents
. Последний представляет особый интерес для приложений в песочнице . запущен или внедрен с использованием Java Web Start .