Как прочитать LIst list для записи в архив zip
Дан метод он принимает List и File target , на понимаю как его прочитать в буфер . Может еще есть ошибки в коде буду благодарен за подсказки.
public static void packFiles(List<File> sources, File target) {
try (ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(target)))) {
int count = 0;
while (sources.size() != count) {
File temp = sources.get(count++);
ZipEntry entry = new ZipEntry(temp.toString());
zip.putNextEntry(entry);
}
try (BufferedInputStream out = new BufferedInputStream(new FileInputStream(sources))) это место !
{
zip.write(out.readAllBytes());
}
} catch (Exception e) {
e.printStackTrace();
}
}
Ответы (1 шт):
Автор решения: default locale
→ Ссылка
Читать и записывать каждый файл тоже нужно в цикле. Что-то вроде этого должно сработать:
while (sources.size() != count) {
File temp = sources.get(count++);
ZipEntry entry = new ZipEntry(temp.toString());
zip.putNextEntry(entry);
try (BufferedInputStream bis= new BufferedInputStream(new FileInputStream(temp))) {
zip.write(bis.readAllBytes());
}
zip.closeEntry();
}
Имхо, вместо while со счетчиком проще использовать for, а файлы можно сразу считать целиком через Files.readAllBytes:
for(File temp : sources) {
ZipEntry entry = new ZipEntry(temp.toString());
zip.putNextEntry(entry);
zip.write(Files.readAllBytes(temp.toPath()));
zip.closeEntry();
}