1

我创建了 3 个 xml 文件并压缩到一个 zip 文件夹中。该文件夹是从服务器发送的。当我通过浏览器下载 zip 文件夹时,它可以正常工作并且可以提取文件。但是当我从安卓应用程序下载它并存储在 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无法存储流中的值。

4

1 回答 1

1

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

最好尝试类似的东西

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

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

于 2013-07-16T10:10:06.620 回答