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

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

6 réponses

Répondre au sujet
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 28 mai 2008 à 16:29
+3
Utile
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");
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Ombitious_Developper
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 28 mai 2008 à 18:12
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Twinuts
Mede12 8 Messages postés dimanche 10 décembre 2000Date d'inscription 29 mai 2008 Dernière intervention - 28 mai 2008 à 17:34
0
Utile
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
Mede12 8 Messages postés dimanche 10 décembre 2000Date d'inscription 29 mai 2008 Dernière intervention - 28 mai 2008 à 18:24
0
Utile
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
Twinuts 5261 Messages postés dimanche 4 mai 2003Date d'inscription 20 avril 2018 Dernière intervention - 28 mai 2008 à 19:05
0
Utile
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
Mede12 8 Messages postés dimanche 10 décembre 2000Date d'inscription 29 mai 2008 Dernière intervention - 29 mai 2008 à 09:21
0
Utile
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.