Я не уверен, что запутался в своем опыте с ++, но ...
Я пишу (изучаю) Java-приложение, которое загружается в текстовый файл с датой конфигурации. Kindof как INI-файл.
Фактическое чтение и обработка файла, я думаю, я могу справиться. Это местоположение файла, которое вводит меня в заблуждение.
Я хочу, чтобы этот дополнительный текстовый файл хранился в том же каталоге, что и файл приложения jar. Однако я не буду точно знать, где находится этот файл приложения на клиентском компьютере - как в каком каталоге. И, поскольку мне нужен полный путь для обеспечения загрузки файла, мне нужен способ программного поиска пути к файлу jar во время выполнения.
Оглядываясь вокруг, я думал, что что-то нашел, но при тестировании он давал мне местоположение файла класса, который его вызывал:
String applicationDir = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
if (applicationDir.endsWith(".exe"))
{
applicationDir = new File(applicationDir).getParent();
}
else
{
// Add the path to the class files
applicationDir += getClass().getName().replace('.', '/');
// Step one level up as we are only interested in the
// directory containing the class files
applicationDir = new File(applicationDir).getParent();
}
Итак, что еще я могу сделать, чтобы найти фактический путь к файлу jar? (И не текущий рабочий каталог, так как это может измениться, поэтому System.getProperty ("user.dir") у меня тоже не работает)