我有一个创建的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
无法存储来自流的值。
答案 0 :(得分:1)
我猜你的主要错误是获得输入流的地方。你实际做的是将服务器响应作为String(BasicResponseHandler),然后再将其转换为字节。由于Java都是UTF-8,因此这很可能不起作用。
最好尝试类似
的内容HttpResponse response = httpclient1.execute(httpPostRequest);
InputStream is = response.getEntity().getContent()
(做更好的空指针检查,读取try-catch块中的内容,并确保关闭finally块中的所有资源。)