Почему теряются все ZipEntry после первого?

У меня есть SequenceInputStream, в котором находятся 3 FileInputStream-а. Каждый из них открыт для zip папки, в которой лежит текстовый файл. Мне нужно последовательно прочитать все 3 архива и записать результат в файл. Но почему-то метод getNextEntry() у ZipInputStream возвращает null после прочтения первого архива.

        ArrayList<String> files = new ArrayList<>();
        ArrayList<InputStream> streams = new ArrayList<>();
        files.add("C:/temp/file1.zip");
        files.add("C:/temp/file2.zip");
        files.add("C:/temp/file3.zip");
        String resultFile = "C:/temp/result.txt";
        Collections.sort(files);
        for (String file : files) streams.add(new FileInputStream(file));
        ZipInputStream zip = new ZipInputStream(new SequenceInputStream(Collections.enumeration(streams)));
        while (true) {
            ZipEntry entry = zip.getNextEntry();
            if (entry == null) break;
            System.out.println(entry.getName());
            try (OutputStream os = new BufferedOutputStream(new FileOutputStream(resultFile))) {
                final int bufferSize = 1024;
                byte[] buffer = new byte[bufferSize];
                for (int readBytes; (readBytes = zip.read(buffer, 0, bufferSize)) > -1; ) {
                    os.write(buffer, 0, readBytes);
                }
                os.flush();
            }
        }

Ответы (0 шт):