архивировать список файлов java
List<File> files1 = new ArrayList<>(Arrays.asList(new File("rr.xml"), new File("jpeg.jpg")));
for (File file1 : files1) {
try (ZipOutputStream zout = new ZipOutputStream(new FileOutputStream("output.zip"));
FileInputStream fis = new FileInputStream(file1)) {
zout.putNextEntry(new ZipEntry(file1.getName()));
// считываем содержимое файла в массив byte
byte[] buffer = new byte[8000];
int count;
while ((count = fis.read(buffer)) != -1) {
zout.write(buffer, 0, count);
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
Как правильно архивировать список файлов в java? Этот код архивирует только 1 файл .jpg
Ответы (1 шт):
Автор решения: Alex Rudenko
→ Ссылка
В существующем коде в цикле каждый раз пересоздается результирующий файл, поэтому код создания output.zip нужно вынести за пределы цикла, в котором оставить чтение/добавление входных файлов:
List<File> inputFiles = new ArrayList<>(Arrays.asList(new File("rr.xml"), new File("jpeg.jpg")));
try (ZipOutputStream zout = new ZipOutputStream(new FileOutputStream("output.zip"))) {
for (File file : inputFiles) {
try (FileInputStream fis = new FileInputStream(file)) {
zout.putNextEntry(new ZipEntry(file.getName()));
// считываем содержимое файла в массив byte
byte[] buffer = new byte[8000];
int count;
while ((count = fis.read(buffer)) != -1) {
zout.write(buffer, 0, count);
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}