android:Zip文件夹无效

时间:2013-07-16 06:30:49

标签: java android zip zipinputstream

我有一个创建的3个xml文件并压缩成一个zip文件夹。该文件夹是从服务器发送的。当我通过浏览器下载zip文件夹时,它正常工作并可以提取文件。但是当我从Android应用程序下载并存储在SD卡中时,它已损坏。我将文件从SD卡拉到计算机并尝试解压缩文件夹,显示 Zip文件夹无效。我的代码如下:

DefaultHttpClient httpclient1 = new DefaultHttpClient();
                HttpPost httpPostRequest = new HttpPost(
                        Configuration.URL_FEED_UPDATE);
                            byte[] responseByte = httpclient1.execute(httpPostRequest,
                        new BasicResponseHandler()).getBytes();

                InputStream is = new ByteArrayInputStream(responseByte);


                // ---------------------------------------------------

                File file1 = new File(Environment
        .getExternalStorageDirectory() + "/ast");
                file1.mkdirs();
                //
                 File outputFile = new File(file1, "ast.zip");
                FileOutputStream fos = new FileOutputStream(outputFile);

                byte[] buffer = new byte[1024];
                int len1 = 0;
                while ((len1 = is.read(buffer)) != -1) {
                    fos.write(buffer, 0, len1);
                }
                fos.close();                
                is.close();

当我使用

ZipInputStream zin = new ZipInputStream(new BufferedInputStream(is));

ZipInputStream无法存储来自流的值。

1 个答案:

答案 0 :(得分:1)

我猜你的主要错误是获得输入流的地方。你实际做的是将服务器响应作为String(BasicResponseHandler),然后再将其转换为字节。由于Java都是UTF-8,因此这很可能不起作用。

最好尝试类似

的内容
HttpResponse response = httpclient1.execute(httpPostRequest);
InputStream is = response.getEntity().getContent()

(做更好的空指针检查,读取try-catch块中的内容,并确保关闭finally块中的所有资源。)