【发布时间】:2010-09-14 15:57:37
【问题描述】:
以前,我们的 Web 应用程序中有一些 zip 文件。我们希望解析 zip 文件中的特定文本文档。这不是问题:
URL url = getClass().getResource(zipfile);
ZipFile zip = new ZipFile(url.getFile().replaceAll("%20", " "));
Entry entry = zip.getEntry("file.txt");
InputStream is = zip.getInputStream(entry);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while (line != null) {
// do stuff
}
但是,我们已经将这些 zip 文件移动到另一个模块中,并希望将它们打包到一个 jar 中。不幸的是,现在创建 ZipFile 失败了。我可以为 zip 获取 InputStream:但我无法获取条目本身的输入流。
InputStream is = getClass().getResourceAsStream(zipfile);
ZipInputStream zis = new ZipInputStream(is);
ZipEntry entry = zis.getNextEntry();
while (entry != null && !entry.getName().equals("file.txt")) {
entry = zis.getNextEntry();
}
但我无法获取条目本身的输入流。我尝试查找条目的长度并从 ZipInputStream 获取下一个 n 字节,但这对我不起作用。似乎读取的所有字节都是 0。
有没有办法解决这个问题,还是我必须将 zip 文件移回核心项目?
【问题讨论】: