Как получить путь к ресурсу/файлу из файла java jar
Вопрос
Я пытаюсь получить путь к файлу, который он расположен из Java Jar, и я не хочу использовать абсолютный путь. ASMAMPEL: Допустим, JAR расположена в ~/lib/myjar.jar, а файл находится в той же папке. Я пробовал что -то подобное, но это терпит неудачу:
File myfile = new File(this.getClass().getResource("../../../").toURI());
Примечание: мой пакет com.contro.gui, вот почему у меня есть "../../../", чтобы привести к "корень"
Я не уверен, как я могу получить доступ к файлу. Любое предложение?? А как насчет того, если файл, к которому я хочу получить доступ, в другой папке, такой как ~/ res/ ???
Решение
Если файл находится в том же каталоге, что и JAR, я думаю, что это сработает (чувствует себя довольно хакерским, но ...):
URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file
(Не протестировал это, но это кажется выполнимым. Конечно, будет работать только с банками на основе файлов).
Если файл находится в каком -то случайном месте, я думаю, вам нужно будет либо пройти в параметрах, либо проверить «известные» местоположения, такие как user.home
. Анкет (Или вы всегда можете поместить файл в банку getResource()
.)
Другие советы
Нет, просто делай
File FileName = new File(".");
String Directory = FileName.getCanonicalPath();
Это даст вам родительский каталог вашего класса в файле или JAR, просто не забудьте установить каталог, если он находится в банке, подобной этому «имя nameoffolder etc».