在java中使用InputStream和ZipInputStream

时间:2013-08-03 18:36:05

标签: java inputstream zipinputstream

在Java中,我接受来自网页的输入流,该输入流恰好是一个zip文件。我想在将文件保存到磁盘之前解压缩该文件。但是,我的zipInputStream.getNextEntry会引发以下错误:

"java.util.zip.ZipException: only DEFLATED entries can have EXT descriptor"

这是我正在使用的代码。第一部分工作正常:

URL url = new URL ("http://"+ipAddress+"/axis-cgi/record/download.cgi?diskid=SD_DISK&recordingid="+recordingID);
byte[] encodedBytes = Base64.encodeBase64((username+":"+password).getBytes());
String encoding = new String (encodedBytes);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput (true);
connection.setRequestProperty  ("Authorization", "Basic " + encoding);
connection.connect();

InputStream inputStream = connection.getInputStream();

这是我的代码中抛出错误的部分(在下面的'while'语句中)。请注意,unpack()会写入文件。

ZipInputStream zipStream = new ZipInputStream(inputStream);
ZipEntry zipEntry = null;
while ((zipEntry = zipStream.getNextEntry()) != null) {
    File destinationFile = new File("C:/Users/user1/Documents/folder1/test", zipEntry.getName());
    unpackEntry(destinationFile, zipStream);
}
zipStream.close();

错误说只有缩小的条目可以有EXT?这是否意味着我收到的文件实际上不是拉链(即它是常规文件夹)?我尝试使用File直接保存InputStream,但结果是我的计算机无法识别的文件。

1 个答案:

答案 0 :(得分:-2)

根据c.s.的建议,我回顾了这个帖子。 how to unzip an encrypted ODT OpenDocument in Java。总而言之,ZipInputStream在解压缩zip文件但未压缩的文件时遇到问题。