【发布时间】:2019-04-10 08:50:43
【问题描述】:
我有一个 Zip 文件,我正在尝试阅读。我不想使用ZipFile,因为将来我想对不是来自文件的数据执行此操作。
这是我迄今为止尝试过的。它不打印res00000.dat 的内容,而是打印一个空行。我不知道如何解决这个问题
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
if (!zipEntry.getName().equals("res00000.dat")) {
zipInputStream.closeEntry();
continue;
}
}
int len;
ByteArrayOutputStream byteArrayOutputStream = new ByterrayOutputStream();
byte[] buffer = new byte[1024];
while ((len = zipInputStream.read(buffer)) > 0) {
byteArrayOutputStream.write(buffer, 0, len);
}
String xml = byteArrayOutputStream.toString();
System.out.println(xml);
zipInputStream.closeEntry();
zipInputStream.close();
return null;
我的 ZIP 文件中只有两个文件。这是我正在尝试解析的 Blackboard 测试库文件:
Zip file
+-imsmanifest.xml
+-res00000.dat
有人可以帮忙吗?
【问题讨论】:
-
在调试器下逐步运行代码并检查相关值。
-
如果您不在 Windows 中,请尝试查看“unzip -v blackboardtest.zip”的输出,以验证 res00000.dat 条目的大小。此外,请确认 res00000.dat 位于 zip 文件的根目录中,而不是目录中。