Java - скачанный ZIP-архив с S3 поврежден - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь загрузить ZIP-архив из корзины S3, используя этот код:

S3Object fullObject = client.getObject(bucketName, key);
S3ObjectInputStream stream = fullObject.getObjectContent();

FileOutputStream outputStream = new FileOutputStream(archiveName);

while ((count = stream.read(data)) != -1) {
    outputStream.write(data, 0, count);
}

outputStream.close();
stream.close();

Файл загружен, его размер примерно такой же, как у S3, толькоПроблема в том, что он поврежден.Если я наберу unzip -t <archive_name.zip>, я получу следующую ошибку:

End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive. unzip: cannot find zipfile directory in one of PCxazGHgMmDedx8wNM16L.zip or PCxazGHgMmDedx8wNM16L.zip.zip, and cannot find PCxazGHgMmDedx8wNM16L.zip.ZIP, period.

Я попытался использовать ZipOutputStream, объявленный так:

ZipOutputStream zipStream = new ZipOutputStream(new BufferedOutputStream(outputStream));

но для этого требуется ZipEntry, который по сути является новым файлом / каталогом внутри архива, который я не вижу, потому что у меня есть только поток.

Как я могу решить эту проблему?

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...