|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 327
|
[JAVA] analizzare il contenuto di un jar a runtime
Ciao.
volevo chiedervi in che modo posso analizzare (a runtime) il contenuto del file jar che sto eseguendo (o di un altro file jar). Infatti vorrei estrarre alcune file dal jar che sto eseguendo, ma riesco a farlo solo se gli indico io il nome del file da estrarre. Il problema è che vorrei farlo senza dovergli indicare tutti i file ma facendogli estrarre automaticamente tutti i files contenuti in una sottodirectory del file jar. Il metodo (che mi funziona) che uso per estrarre il singolo file è il seguente (ha il problema che estrae un singolo file quindi devo specificare i file da estrarre all'interno del codice): Codice:
/** Estrae un file dal file jar mettendolo nella directory SETTINGSDIR */ private void extractSetting(String fileName){ //estraggo dal file .jar i .vcf se non sono già presenti ClassLoader jarFile=getClass().getClassLoader(); try { //creo la directory che conterrà i settaggi if(!new File(SETTINGSDIR).exists()) new File(SETTINGSDIR).mkdir(); //se il settaggio non c'è già lo estraggo if(!new File(SETTINGSDIR+fileName).exists()){ InputStream in=jarFile.getResourceAsStream(fileName); OutputStream out = new FileOutputStream(SETTINGSDIR+fileName); // Transfer bytes from in to out byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); } } catch (Exception e) {e.printStackTrace();} } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ma usare winrar tipo?
![]()
__________________
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
infatti......non capisco perchè complicarsi la vita
![]()
__________________
My gaming placement |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 327
|
Perché io devo estrarre il file jar da remoto utilizzando una servlet. Il file risiederebbe sul server del cliente (mi hanno detto di fare così, io avrei messo direttamente i files estratti).
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Prova a caricare il file Jar con la getResource del tuo classLoader, poi aprilo come JarFile: troverai all'interno una sequenza di ZipEntry, che corrispondo ai file contenuti.
Attenzione però: se fai così, devi aggiungere al classpath la directory che contiene il file Jar (non solo il file Jar in sè, non basta). Se il file sta in "tomcat/lib", per esempio, puoi mettere nel classpath "tomcat/lib/miojar.jar;tomcat/lib".
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 327
|
Grazie mille.
Oggi pomeriggio proverò ad utilizzare la classe JarFile che mi hai segnalato (e di cui ingoravo l'esistenza). Ciao. |
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
dal post iniziale non si capiva quello ke doveva fare ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:40.