Доступ к файлу внутри файла .jar
Возможный дубликат:
Как прочитать файл ресурсов из файла jar java?
Начнем с того, что заработали на этом несколько часов после игры в Google. Я также видел варианты вопроса на сайте, но не могу заставить его работать. JFrame необходимо прочитать данные из ini файла, и я создал метод для открытия указанного файла. Указанный файл хранится в папке, называемой ресурсами внутри файла jar.
private BufferedReader openIniFile(String filename){
BufferedReader brReader = null;
try{
File fileObj = new File(this.getClass().getResource("/resources/" + filename).toURI()); // The fileobject of the file to read
if(fileObj.exists())
brReader = new BufferedReader(new FileReader(fileObj));
} catch(Exception e){
System.err.println("Exception while opening file: " + e.getMessage());
}
return null;
}
Это, конечно, отлично работает, когда я запускаю код после компиляции, но генерирует исключение после экспорта в файл .jar. Я изучил использование InputStream, FileInputStream, но не мог найти решение, которое будет работать.
Как я могу заставить файл jar распознать ресурс?
Ответы
Ответ 1
Когда ваш ресурс находится в файле JAR, он больше не является файлом. Файл - это только физический файл в файловой системе.
Решение: используйте getResourceAsStream. Что-то вроде этого:
new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/" + filename)))
Ответ 2
Вы неправильно читаете файл. Если файл находится в JAR, вы не можете использовать класс File
. Вместо этого вы должны получить InputStream
в файле с помощью getResourceAsStream()
:
InputStream in = this.getClass().getResourceAsStream("/resources/" + filename);
Ответ 3
java.util.zip
может быть вашим другом.