Как получить путь к ресурсу / файлу из файла JAR Java - PullRequest
2 голосов
/ 14 октября 2010

Я пытаюсь получить путь к файлу, который находится вне java jar, и я не хочу использовать абсолютный путь. Пример: предположим, что jar находится в ~ / lib / myjar.jar, а файл находится в той же папке. Я пытаюсь что-то вроде этого, но не получается:

File myfile = new File(this.getClass().getResource("../../../").toURI());

Примечание: мой пакет com.contro.gui, поэтому у меня есть "../../../", чтобы получить доступ к "корню"

Я не уверен, как я могу получить доступ к файлу. Любое предложение?? А что, если файл, к которому я хочу получить доступ, находится в другой папке, например ~ / res / ???

Ответы [ 2 ]

4 голосов
/ 14 октября 2010

Если файл находится в том же каталоге, что и jar, я думаю, что это будет работать (выглядит довольно странно, но ...):

URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file

(не проверял это, но, похоже,выполнимо. Разумеется, будет работать только с jar-файлами на основе файлов.

Если файл находится в каком-либо случайном месте, я думаю, вам нужно будет либо передать параметры, либо проверить «известные» места, такие как user.home.(Или вы всегда можете положить файл в банку, используя getResource().)

0 голосов
/ 20 сентября 2017

Нет, просто сделайте

     File FileName = new File(".");
     String Directory = FileName.getCanonicalPath();

, который даст вам родительский каталог вашего класса в файле или банке, просто не забудьте установить каталог, если он находится в банке, такой как "NameOfJar \ NameOfFolder \ etc"

...