Я пытаюсь загрузить zip-файл на SD-карту. Я загружаю его правильно, но когда я открываю загруженный файл (с помощью ZipFile), я получаю это ZipException («Запись в центральном каталоге не найдена»).
Интернет-файл в порядке, SD-копия-файл в порядке (с ПК открываются и показывают файлы правильно), но почему-то не работают в 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");
}
Спасибо,