I am trying to extract a zip file from my current JAR using:
InputStream resource = getClass().getClassLoader().getResourceAsStream(name);
Get the correct InputStream , but it gives an error when I try to unzip it using the following code (I store each file in a Hashmap<file, filename> ):
public static HashMap<String, String> readZip(InputStream inputStream) throws IOException { byte[] buffer = new byte[1024]; HashMap<String, String> list = new HashMap<>(); ZipInputStream zipInputStream = new ZipInputStream(inputStream); ZipEntry entry = zipInputStream.getNextEntry(); while (entry != null) { if (!entry.isDirectory()) { StringBuilder stringBuilder = new StringBuilder(); while (IOUtils.read(zipInputStream, buffer) > 0) { stringBuilder.append(new String(buffer, "UTF-8")); } list.put(stringBuilder.toString(), entry.getName()); } zipInputStream.closeEntry(); entry = zipInputStream.getNextEntry(); } zipInputStream.closeEntry(); zipInputStream.close(); return list; }
However, when I try to do this, I get this exception (on IOUtils.read )
java.util.zip.ZipException: invalid stored block lengths at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.ZipInputStream.read(Unknown Source)
Am I doing it wrong? I made a lot of mistakes in the error, and I did not see anything related to my problem.
java maven zip embedded-resource
PaulBGD
source share