Перое требование:
1. В методе main нужно создать ZipInputStream для архива, собранного из кусочков файлов. Файлы приходят аргументами в main, начиная со второго.
Я так понял первым делом нужно собрать архив из того что приходит... А приходят названия файлов ZipEntry... Почему же тогда все красное и где моя ошибка?
Так можно получать содержимое этих энтрри?
new ZipFile("").getInputStream(ze).read(byteArrayOutputStream.toByteArray());
тут не пустой массив получается?
byteArrayOutputStream.toByteArray()package com.javarush.task.task31.task3106;
import java.io.*;
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.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/*
Разархивируем файл
*/
public class Solution {
public static void main(String[] args) throws IOException{
Set<String> set = new TreeSet<>();
for(int i = 1; i < args.length; i++){
set.add(args[i]);
}
ZipOutputStream zop = new ZipOutputStream(new FileOutputStream("c:\\my.zip"));
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
for (String entry : set){
ZipEntry ze = new ZipEntry(entry);
zop.putNextEntry(ze);
new ZipFile("").getInputStream(ze).read(byteArrayOutputStream.toByteArray());
zop.write(byteArrayOutputStream.toByteArray());
}
zop.close();
ZipInputStream zis = new ZipInputStream(new FileInputStream("c:\\my.zip"));
FileOutputStream fileOutputStream = new FileOutputStream(args[0]);
fileOutputStream.write(zis.read(byteArrayOutputStream.toByteArray()));
zis.close();
fileOutputStream.close();
}
}