Récupérer un fichier texte d'un JAR [Résolu]

Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
29 mai 2008
- - Dernière réponse : Mede12
Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
38
3
Merci
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");

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
5322
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
4 février 2019
98
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Twinuts
Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
29 mai 2008
0
Merci
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 ?
Commenter la réponse de Mede12
Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
29 mai 2008
0
Merci
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
Commenter la réponse de Mede12
Messages postés
5322
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
4 février 2019
98
0
Merci
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
Commenter la réponse de Twinuts
Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
29 mai 2008
0
Merci
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 :) )
Commenter la réponse de Mede12

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.