Итак, я нашел решение.
Я использую этот метод, чтобы получить InputStream файла, который находится в банке вашего приложения:
public InputStream getLanguageStream(String languageName) {
languageName = languageName.replace(".properties", "");
return MainClass.class.getResourceAsStream("/me/s3ns3iw00/resources/languages/" + languageName + ".properties");
}
Теперь вы можете загрузить его в Свойства:
properties.load(new InputStreamReader(getLanguageStream("ENG"), Charset.forName("UTF-8")));
И дополнительно:
Я использую этот метод для получения имени файла в пути к jar:
public List<String> getFileNamesInJarPath(String jarPath) {
List<String> fileNames = new ArrayList<>();
CodeSource src = MainClass.class.getProtectionDomain().getCodeSource();
try {
if (src != null) {
URL jar = src.getLocation();
ZipInputStream zip = new ZipInputStream(jar.openStream());
while (true) {
ZipEntry e = zip.getNextEntry();
if (e == null)
break;
String name = e.getName();
if (name.startsWith(jarPath)) {
String substringedName = name.substring(name.lastIndexOf("/") + 1);
if (!substringedName.equalsIgnoreCase("")) {
fileNames.add(substringedName);
}
}
}
} else {
/* Fail... */
}
} catch (IOException e) {
e.printStackTrace();
}
return fileNames;
}
Вы получаете список содержимого каталога jarPath, который находится вбаночка ваших приложений.