Accedere a un file all’interno di un file .jar

Possibile duplicato:
Come posso leggere un file di risorse da un file jar Java?

Iniziare ad andare completamente su questo dopo googling per ore. Ho anche visto variazioni della domanda sul sito ma non riesco a farlo funzionare. Un JFrame ha bisogno di leggere i dati da un file ini e ho creato un metodo per aprire detto file. Tale file è archiviato in una cartella denominata risorse all’interno di un file 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; } 

Questo ovviamente funziona perfettamente quando eseguo il codice dopo la compilazione, ma genera un’eccezione dopo essere stato esportato in un file .jar. Ho esaminato l’uso di InputStream, FileInputStream ma non riesco a trovare una soluzione che funzioni.

Come posso fare in modo che il file jar riconosca la risorsa?

Quando la tua presentazione è in file JAR, non è più un file. Un file è solo un file fisico sul filesystem. Soluzione: utilizzare getResourceAsStream . Qualcosa come questo:

 new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/" + filename))) 

Stai leggendo il file sbagliato. Se il file si trova in un JAR, non è ansible utilizzare la class File . Invece, devi ottenere un InputStream sul file usando getResourceAsStream() :

 InputStream in = this.getClass().getResourceAsStream("/resources/" + filename);