我试图从我当前的JAR中提取ZIP文件:
InputStream resource = getClass().getClassLoader().getResourceAsStream(name);
Run Code Online (Sandbox Code Playgroud)
这是正确的InputStream,但是当我尝试使用以下代码解压缩它时会出错(我将每个文件存储到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;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样做时,我得到了这个例外(上IOUtils.read)
java.util.zip.ZipException: …Run Code Online (Sandbox Code Playgroud)