Доступ к файлу, смежному с файлом jar

#java #file #io

#java #файл #io

Вопрос:

Как я могу получить доступ к файлу, смежному с файлом jar (не внутри него), самым чистым из возможных способов?

Я пробовал различные комбинации, такие как File configFile = new File("..//pinger.properties"); и Pinger.class.getResourceAsStream("pinger.properties"); , но файл не читается.

Спасибо!

Ответ №1:

Вы можете попробовать использовать java.util.Свойства класса.

    Properties properties = new Properties();
   properties.load(getClass().getClassLoader().getResourceAsStream("pinger.properties"));
  

Здесь приведен еще один пример.

Ответ №2:

Как я могу получить доступ к файлу, смежному с файлом jar (не внутри него), самым чистым из возможных способов?

Добавьте файл манифеста, который ссылается на зависимый Jar, используя относительный путь1. Затем используйте getResource(String) для получения URL доступа к ресурсу.

  1. Подробности см. в разделе Добавление классов к пути к классам файла JAR.

Ответ №3:

Получите местоположение вашего файла jar

Рассмотрим следующую функцию

 public String path(String filename)
{
URL url1 = getClass().getResource("");
String ur=url1.toString();
ur=ur.substring(9);
String truepath[]=ur.split("myjar.jar!");
truepath[0]=truepath[0].replaceAll(" "," ");
return truepath[0] filename;
}//This method will work on Windows and Linux as well.
//You can alternatively use the following line to get the path of your jar file
//classname.class.getProtectionDomain().getCodeSource().getLocation().getPath();
  

Предположим, что ваш файл jar находится в D:Testdist

Затем path() вернет /D:/Test/dist/filename