Файл распаковывается согласно условию, потоки закрыл.
Что не так?
package com.javarush.task.task31.task3106;
import java.io.*;
import java.lang.reflect.Array;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/*
Разархивируем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
List<String> listOfFiles = new ArrayList<>();
for(int i = 1; i< args.length; i++){
listOfFiles.add(args[i]);
}
Collections.sort(listOfFiles);
List<InputStream> listOfStreams = new ArrayList<>();
for(int i = 0; i< listOfFiles.size(); i++){
listOfStreams.add(new FileInputStream(listOfFiles.get(i)));
}
Enumeration<InputStream> partsOfArchive = Collections.enumeration(listOfStreams);
SequenceInputStream sequenceInputStream = new SequenceInputStream(partsOfArchive);
ZipInputStream zipInputStream = new ZipInputStream(sequenceInputStream);
ZipEntry zipEntry = null;
while((zipEntry = zipInputStream.getNextEntry()) != null ){
String fileName = zipEntry.getName(); //получаем имя файла
Path outputFile = Paths.get(args[0]);
OutputStream outputStream = Files.newOutputStream(outputFile);
write(zipInputStream, outputStream);
outputStream.close();
}
zipInputStream.close();
}
private static void write(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[8 * 1024];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
}
}