Ce que je tente de faire est de stocker un fichier texte (qui ne changera pas) dans le JAR du programme afin qu'il puisse être lu. Le but du fichier texte est qu'il sera lu par une de mes classes et le contenu du fichier texte sera ajouté à un JEditorPane
. Le fichier sera essentiellement un tutoriel et lorsque l'utilisateur clique sur l'option pour lire le tutoriel, le contenu du fichier sera lu et affiché dans une nouvelle fenêtre qui apparaît. J'ai la partie de l'interface graphique vers le bas, mais dans la mesure où stocker le fichier dans le fichier JAR afin qu'il puisse être consulté, je suis perdu. J'ai lu que l'utilisation d'un InputStream
fonctionnera, mais après avoir essayé quelques petites choses, je n'ai pas encore réussi à le faire fonctionner.Comment lire un fichier texte dans un fichier JAR?
Je stocke également des images dans le JAR à utiliser comme icônes pour les fenêtres GUI. Ceci est accompli avec:
private Image icon = new ImageIcon(getClass()
.getResource("resources/cricket.jpg")).getImage();
Mais, cela ne fonctionne pas lorsque vous essayez d'obtenir un fichier:
private File file = new File(getClass.getResource("resources/howto.txt"));
Voici ma classe comme il est maintenant:
public class HowToScreen extends JFrame{
/**
*
*/
private static final long serialVersionUID = -3760362453964229085L;
private JEditorPane howtoScreen = new JEditorPane("text/html", "");
private Image icon = new ImageIcon(getClass().getResource("resources/cricket.jpg")).getImage();
private BufferedReader txtReader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/howto.txt")));
public HowToScreen(){
setSize(400,300);
setLocation(500,200);
setTitle("Daily Text Tutorial");
setIconImage(icon);
howtoScreen.setEditable(false);
howtoScreen.setText(importFileStream());
add(howtoScreen);
setVisible(true);
}
public String importFile(){
String text = "";
File file = new File("howto.txt");
Scanner in = null;
try {
in = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while(in.hasNext()){
text += in.nextLine();
}
in.close();
return text;
}
public String importFileStream(){
String text = "";
Scanner in = new Scanner(txtReader);
while(in.hasNext()){
text += in.nextLine();
}
in.close();
return text;
}
}
Ignore la méthode importFile
en cours de suppression au profit du stockage du fichier tutoriel à l'intérieur du JAR, rendant le programme entièrement autonome car je suis limité à la quantité d'espace que le programme peut utiliser. Après avoir essayé toutes les suggestions ci-dessous, j'ai vérifié pour voir si mon JAR empaquette le fichier texte dedans et il ne l'est pas. Lorsque j'ouvre le JAR avec 7zip, dans mon dossier de ressources, l'image que j'utilise pour les icônes est là, mais pas le fichier texte.
Décrivez ce que "ne fonctionne pas" signifie. Si vous obtenez une erreur, montrez-nous l'erreur. –
C'est '.getClass()'. – n1xx1
Voir aussi http://stackoverflow.com/q/10452825/180100 –