Поменял на avalible
Но все равно долго . у меня на компе быстро пролетает и все((
по поводу return null;
К сожаление описание этого мало нашел))
но как я понял мы проверяем же есть ли следующий файл ну если нет возвращаем нечего
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 {
// args = new String[] {"C:\\11\\5.txt","C:\\11\\4.zip.001","C:\\11\\4.zip.002","C:\\11\\4.zip.003"};
// args = new String[] {"C:\\11\\5.zip","C:\\11\\1.txt.001","C:\\11\\1.txt.002","C:\\11\\1.txt.003"};
TreeSet<String> name = new TreeSet<>();
for (int i=1;i<args.length;i++)
name.add(args[i]);
int index1 = name.first().indexOf(".001");
String firstPartName = name.first().substring(0,index1);
System.out.println(firstPartName);
Vector<String> files = new Vector<>();
for(String state : name) {
files.add(state);
}
InputStream in = new SequenceInputStream(new SequenceEnumaerator(files));
String resultFileName = args[0];
ZipInputStream zin = new ZipInputStream(in);
ZipEntry entry;
FileOutputStream fout = new FileOutputStream(resultFileName);
while((entry=zin.getNextEntry())!=null) {
int c;
while (zin.available()>0){
c = zin.read();
fout.write(c);
}
}
fout.flush();
}
}
class SequenceEnumaerator implements Enumeration<FileInputStream>{
private Enumeration<String> files;
public SequenceEnumaerator(Vector<String> files){
this.files=files.elements();
}
@Override
public boolean hasMoreElements() {
return files.hasMoreElements();
}
@Override
public FileInputStream nextElement() {
try {
return new FileInputStream(files.nextElement());
} catch (FileNotFoundException e) {
return null;
}
}
}