В настоящее время я создаю zip-файл и заполняю его различными json файлами и изображениями. Все это должно выполняться только в памяти, а не на жестком диске. Поэтому у меня пока есть следующая конструкция:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zip = null;
String FILE_NAME = "file.zip";
try {
zip = new ZipOutputStream(baos);
//now the critical part where the name of the file should be set
ZipEntry entry = new ZipEntry(FILE_NAME);
zip.putNextEntry(entry);
byte[] data = FILE_NAME.getBytes();
zip.write(data, 0, data.length);
zip.closeEntry();
//end of critical part and filling the rest of the zip
//...
//
}finally{
IOUtils.closeQuietly(zip);
byte[] byteFile = baos.toByteArray();
IOUtils.closeQuietly(baos);}
Проблема в том, что zip-файл называется file.zip, но также содержит сам файл.zip. Как я могу назвать свой Zip-файл из ZipOutputStream без упаковки в этот один файл с таким же именем? К сожалению, я нашел это решение только здесь.