2010-08-23 6 views
0

donc, j'ai un fichier jar et dans ce jar il y a un autre fichier config.js, et dans ce fichier, je veux écrire. J'ai une classe de ressources de ce fichier (org.springframework.core.io.Resource), donc je peux obtenir une URL complète ou getFile() de cette ressource. URL regard est comme ça:Modifier le fichier en jar

jar:file:/Users/admin/.m2/repository/code/1.1-SNAPSHOT/code-1.1-SNAPSHOT.jar!/META-INF/config.js 

Le porblem est, si je tente de getFile() à partir des ressources que je reçois une exception: ne peut pas être résolu de chemin de fichier absolu, car il ne réside pas dans le système de fichiers. Alors, comment puis-je écrire dans ce fichier en pot? :)

Répondre

1

Vous pouvez utiliser ZipStreams sur votre pot, et à partir de là, vous pouvez manipuler votre pot. La meilleure façon de gérer votre pot est directement à utiliser ZipFile ou mieux encore JarFile

+0

Hm, que je devrais tout d'abord créer un fichier JarFile: /Users/admin/.m2/repository/code/1.1-SNAPSHOT/code- 1.1-SNAPSHOT.jar puis getEntity /META-INF/config.js à partir de ce fichier jar, non? –

+0

Vous n'avez rien à créer, vous ouvrez le fichier Jar avec 'new JarFile (pathToJar)' et ensuite 'getEntry (yourFile)'. –

+0

Et que, que puis-je faire avec cette entrée? Comment puis-je écrire dedans? –

0

Utilisez l'API dans java.util.zip et java.util.jar.
Si je me souviens bien, vous pouvez modifier le fichier "inline" et enregistrer, ou simplement le modifier à l'extérieur, enregistrer dans un fichier temporaire, puis repasser le fichier temporaire dans le pot.