我正在尝试将zip文件下载到SD卡。我正确下载它,但是当我打开下载的文件(使用ZipFile)时,我得到了这个ZipException(“未找到中央目录条目”)。
Internet文件没问题,SD-copy-file没问题(从PC打开并正确显示文件),但由于某种原因在Android中不起作用。
下载代码:
BufferedInputStream stream = null;
try {
stream = new BufferedInputStream(is, 8192);
}
....
try {
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = stream.read()) != -1 )
baf.append((byte) current);
BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(path));
fos.write(baf.toByteArray());
fos.close();
}
...
我认为问题出在ZIP文件标题中,但是没有正确编写,但我不知道是什么原因。源代码ZipEntry类向我展示了这个:
long sig = (hdrBuf[0] & 0xff) | ((hdrBuf[1] & 0xff) < < 8) |
((hdrBuf[2] & 0xff) < < 16) | ((hdrBuf[3] < < 24) & 0xffffffffL);
if (sig != CENSIG) {
throw new ZipException("Central Directory Entry not found");
}
谢谢,
答案 0 :(得分:3)
自动回答:问题是HTTP请求使用 Accept-Encoding:gzip 。
服务器返回一个已压缩的文件并下载,解压缩,删除部分标题。
不幸的是,7zip正确打开(可能不是检查标题),但Android没有打开文件(可能是检查标题)。
简而言之:请注意,并使用某些文件正确检查文件编码。