我创建了 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/