Работает неправильно, записывает только 1 часть, все остальные почему-то нет. Когда делаю присваение entry = zip.getNextEntry(), то entry != null, только первый раз entry не null, все остальные архивы не доходят, помогите найти ошибку, кому не сложно, пожалуйста. Для проверки создал три архива zip с именами - (Zip.zip.001, Zip.zip.002, Zip.zip.003) и создал конечный файл, куда все будет писаться(ОС линукс). Моя догадка: я думаю, что zip не успевает перепрыгнуть на следующий архив из SequenceInputStream, поэтому и энтри у него нет, если это так, то как тогда заставить начать читать данные из след. потока
package com.javarush.task.task31.task3106;
import java.io.*;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class Solution {
public static void main(String[] args) throws IOException {
List<InputStream> listStream = new Vector<>();
List<String> listPath = new LinkedList<String>(Arrays.asList(args));
listPath.remove(0);
Collections.sort(listPath);
for(String i : listPath) {
listStream.add(new FileInputStream(i));
}
byte[] contentFile /*= new byte[maxSizeFile]*/;
try(OutputStream is = new FileOutputStream(args[0]);
ZipInputStream zip = new ZipInputStream(new SequenceInputStream(Collections.enumeration(listStream)))) {
for(ZipEntry entry = zip.getNextEntry(); entry != null; ) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
contentFile = new byte[(int)entry.getSize()];
int count;
while((count = zip.read(contentFile)) != -1) {
baos.write(contentFile, 0, count);
}
is.write(baos.toByteArray());
zip.closeEntry();
entry = zip.getNextEntry();
}
}
}
}
/*
Разархивируем файл
*/