java - 机器人 : Zip Folder is invalid

标签 java android zip zipinputstream

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

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 无法存储流中的值。

最佳答案

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

最好尝试类似的东西

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

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

关于java - 机器人 : Zip Folder is invalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17669519/

相关文章:

java - 递归遍历数组

android - 将 proguard 文件上传到 Google Play 控制台时出错

java - Joda 日期格式问题

java - 我不确定什么是不正确的

java - 如何将 jar 与配置文件一起打包为 docker 镜像

encoding - 使用静态霍夫曼码进行 DEFLATE 编码

python - 获取远程 zip 文件并列出其中的文件

android - 缺少 EditText 选择 anchor

android - RecyclerView - GridLayoutManager - 双向滚动

ios - 如何解压缩文件?