未找到中央目录条目(ZipException)

时间:2010-12-10 12:31:30

标签: android download header zip xamarin.forms.entry

我正在尝试将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");
}

谢谢,

1 个答案:

答案 0 :(得分:3)

自动回答:问题是HTTP请求使用 Accept-Encoding:gzip

服务器返回一个已压缩的文件并下载,解压缩,删除部分标题。

不幸的是,7zip正确打开(可能不是检查标题),但Android没有打开文件(可能是检查标题)。

简而言之:请注意,并使用某些文件正确检查文件编码。