Может я как то не правильно понял задачу:
1) запоминаем арг(0)
2) соритруем аргументы
3) читаем из каждого (кроме бывшего арг(0) ) поток данных в буффер (разархивируем), предпологагая при этом что в каждом из них возможен не один энтри
4) Создаем поток на запись в файл под именем первоначального арг(0)
5) записываем в него наш буффер.
package com.javarush.task.task31.task3106;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/*
Разархивируем файл
*/
public class Solution
{
public static void main(String[] args) throws IOException
{
String resultFileName = args[0];
Arrays.sort(args);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
for (String elem: args) // loop by files name
{
if (!elem.equals(resultFileName))
{
FileInputStream zipFile = new FileInputStream(elem);
ZipInputStream zip = new ZipInputStream(zipFile);
while (zip.available() != 0) // loop by entrys
{
ZipEntry zipTmp;
if ((zipTmp = zip.getNextEntry()) != null)
{
int b;
while ((b = zip.read()) != -1) // loop by bytes
{
buffer.write(b);
}
}
zip.closeEntry();
}
zip.close();
zipFile.close();
}
}
buffer.close();
FileOutputStream resultFile = new FileOutputStream(resultFileName);
resultFile.write(buffer.toByteArray());
resultFile.close();
}
}