Подтвердить что ты не робот

Доступ к файлу внутри файла .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 распознать ресурс?

4b9b3361

Ответ 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 может быть вашим другом.