Как прочитать 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();
}
→ Ссылка