java - 下载、解压缩并将 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();
}
推荐阅读
- c++ - 普通函数重载模板函数但普通不重载模板类?
- c# - 状态栏通知 xamarin 本机 android
- java - 使用 Spring JPA “刷新”实体后未反映更改
- reactjs - this.props.chatVisible 是“未定义”
- java - 尝试连接 docker mysql 时,ResourcePool 无法从其主工厂或源错误获取资源
- cqrs - lagom 如何识别哪些事件是针对哪个实体的
- r - 用 R 创建均衡直方图
- javascript - 如何使用 web3-javascript 在 Sails 中从 js 解析为 ejs
- angular - 为什么Angular5在浏览器F5时调用api?
- regex - 无法使用正则表达式提取值