将 zip 文件下载、解压缩并解析为 Java 对象 - 无法从 ZipInputStream 读取字节



我有以下内容,它无法像我期望的那样将字符串打印到控制台:

String url = "http://mis.ercot.com/misdownload/servlets/mirDownload? 
mimic_duns=000000000&doclookupId=698819309";
URL obj = new URL(url.trim());
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
conn.getResponseCode();
InputStream stream = conn.getInputStream();
ZipInputStream zis = new ZipInputStream(stream);
byte[] buffer = new byte[1024];
int i = zis.read(buffer);
String str = new String(buffer, StandardCharsets.UTF_8);
System.out.println(str);

在 URL 处,有一个 zip 文件,其中包含一个我最终需要解析的 XML 文件,但现在我会满足于简单地将其打印到控制台,从而确认我已经成功解压缩了该文件。

如下所示的内容确实会生成正确的文件名:

ZipEntry ze = zis.getNextEntry();
System.out.println(ze);

因此,我知道我走在正确的轨道上,但我不需要文件名,我甚至不需要文件,我需要XML条目,因为我的最终目标是持久化为SQL。

以下循环应该可以帮助您入门

ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
byte contents[] = new byte[4096];
int direct;
while ((direct = zis.read(contents, 0, contents.length)) >= 0) {
System.out.println(entry.getName() + ", " + direct + " bytes");
for (byte con : contents) {
System.out.print((char) con);
}
}
System.out.println();
}

改编自如何使用输入流从ZIP读取文件?

最新更新