Я пытаюсь загрузить 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, который по сути является новым файлом / каталогом внутри архива, который я не вижу, потому что у меня есть только поток.
Как я могу решить эту проблему?
С уважением.