Вопрос

Я пытаюсь получить путь к файлу, который он расположен из 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».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top