Récupérer un fichier texte d'un JAR

Résolu
Mede12 Messages postés 8 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 29 mai 2008 - 28 mai 2008 à 15:24
Mede12 Messages postés 8 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 29 mai 2008 - 29 mai 2008 à 09:21
Bonjour,
J'ai un petit problème pour récupérer un fichier texte qui se trouve dans un JAR(avec du code).
J'ai regardé pas mal de post, la plus part disaient que l'on peut déziper le .jar et récupérer le fichier... (ok mais ce n'est pas ce que je cherche à faire)
J'ai regardé les javadoc (mais quand on ne sais pas ce que l'on cherche ce n'est pas facile à utiliser...), j'ai vue des trucs du genre JarEntry ou JarInputStream mais je n'est pas très bien saisie leur fonctionnement (voir pas du tout).

Ce que j'aimerais faire c'est une copie d'un fichier texte qui est à l'intérieur du .jar et de l'éditer par la suite.

Pour l'instant j'arrive à lire le fichier texte mais pas à créer une copie de celui-ci...

Si vous avez des éléments pour me mettre sur la voie je suis preneur.

Merci d'avance.

6 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
28 mai 2008 à 16:29
Salut:

Utilises une des deux méthodes:

1. getResource()
2. getResourceAsStream()

Pour récupérer un InputStream à partir d'un fichier data.text situé près d'une classe X:

InputStream is = X.class.getResourceAsStream("data.txt");
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 mai 2008 à 18:12
Salut,

pour ce qui est de la base tu peux faire au plus simple :
int bytes= 0;
byte[] buffer = new byte[1024];
InputStream in = getClass().getResourceAsStream("/Rep.txt");
OutputStream out = new FileOutputStream("Rep.txt");

...
while ((bytes = in.read(buffer)) != -1) {
  out.write(buffer, 0, bytes);
}
....

maintenant reste la gestion de ton ArrayList (si il est nécessaire)....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
Mede12 Messages postés 8 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 29 mai 2008
28 mai 2008 à 17:34
Merci de t'as réponse.

J'ai déjà utilisé la méthode getResourceAsStream().
J'ai fais un truc un peu barbare à goût...

Avec cette méthode je lis tout le document et j'enregistre ligne par ligne dans une arrayList[ligne].
Une fois que j'ai mon arraylist je crée un nouveau document du même nom dans le dossier actuel en réécrivant le tout...

ça donne ça: ( pour les intéressé )

try{
InputStream in = getClass().getResourceAsStream("/Rep.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
do{
line.add(numLigne,br.readLine());
numLigne++;
}while ( !line.get(numLigne-1).equals("fin"));
br.close();

OutputStream out = new FileOutputStream("Rep.txt");
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(out));
for(int i=0; i < numLigne; i++){
output.write(line.get(i));
output.write("\r\n");
}
output.flush();
output.close();
}catch(IOException ioe){
System.out.println("erreurEc1 : " + ioe );
}

Ya t'il un moyen plus propre ?
0
Mede12 Messages postés 8 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 29 mai 2008
28 mai 2008 à 18:24
okay merci.

Si j'ai bien compris le principe de mettre un byte[], c'est que je vais récupérer les 1024 prochain caractères à partir de zéro et ça temps que la ligne n'est pas vide ?

M'enfin merci beaucoup de votre aide je vais mettre un "Résolu" parce que j'ai mon programme qui tourne même s'il n'est pas optimisé :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
28 mai 2008 à 19:05
Salut,

"

okay merci.
"
>> mais de rien

"Si j'ai bien compris le principe de mettre un byte[], c'est que je vais
récupérer les 1024 prochain caractères à partir de zéro et ça temps que
la ligne n'est pas vide ?
"
>>nan pas vraiment ici tu vas lire (au maximum 1024 (ou plus si tu changes)) tant qu'il y a des données à lire et au passage écrire dans le nouveau fichier...

maintenant si tu veux lire ligne par ligne utilise la classe Scanner (dispo depuis le jdk 1.5)

"M'enfin merci beaucoup de votre aide je vais mettre un "Résolu" parce
que j'ai mon programme qui tourne même s'il n'est pas optimisé :p"
>>tu peux toujours donner les routines que tu veux optimiser ou que tu trouves 'crade' histoire de voir si il y a moyen de faire quelque chose dessus.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Mede12 Messages postés 8 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 29 mai 2008
29 mai 2008 à 09:21
Merci pour tout ! =)

A bientôt je pense :p

PS: je n'ai pas utilisé scanner parce que j'ai commencé mon projet en 1.4.0 (je ne comprenais pas pourquoi le scanner ne marché pas .. alors j'ai utilisé la vielle méthode :) )
0
Rejoignez-nous