#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
доступа к ресурсу.
- Подробности см. в разделе Добавление классов к пути к классам файла 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