Bagaimana cara membaca file dari arsip JAR? [duplikat]

Saya perlu membaca konten /test/a.xml dari file test.jar (keduanya adalah variabel, tentu saja, bukan konstanta). Apa cara paling sederhana untuk melakukannya?

File file = new File("test.jar");
String path = "/test/a.xml";
String content = // ... how?

person yegor256    schedule 30.05.2013    source sumber
comment
Apakah aplikasi Anda juga berjalan dari test.jar?   -  person Pshemo    schedule 30.05.2013
comment
Tidak, aplikasi saya tidak berjalan dari test.jar   -  person yegor256    schedule 30.05.2013
comment
Apakah Anda menggunakan Java 7?   -  person Jimmy T.    schedule 30.05.2013
comment
Anda dapat mencoba mengadaptasi contoh ini: javaworld.com/javaworld/javatips/javatip49/ JarResources.java   -  person Hari Menon    schedule 30.05.2013


Jawaban (2)


Bagaimana dengan ini:

JarFile file = new JarFile(new File("test.jar"));
JarEntry entry = file.getJarEntry("/test/a.xml");
String content = IOUtils.toString(file.getInputStream(entry));
person yegor256    schedule 30.05.2013

Gunakan ZipInputStream dan cari file yang Anda minta.

FileInputStream fis = new FileInputStream(args[0]);
ZipInputStream zis =  new ZipInputStream(fis);
ZipEntry ze;

while ((ze = zis.getNextEntry()) != null)
   if(ze.getName().equals("/test/a.xml")
   {
       //use zis to read the file's content
   }
person Jimmy T.    schedule 30.05.2013
comment
Bagaimana cara menggunakan zis untuk membaca konten file? - person mendel; 14.10.2020
comment
@mendel saat Anda berada di dalamnya jika Anda dapat menggunakan fis seperti InputStream biasa dan itu akan memberi Anda konten file - person Jimmy T.; 15.10.2020