package com.javarush.task.task31.task3105;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
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 {
Path file = Paths.get(args[0]);
try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(args[1]));
ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(args[1]))){
Map<String,byte[]> map = new HashMap<>();
while (zipInputStream.available() > 0){
ZipEntry entry = zipInputStream.getNextEntry();
byte[] buff = new byte[2048];
zipInputStream.read(buff);
map.put(entry.getName(),buff);
zipInputStream.closeEntry();
}
int count = 0;
for(Map.Entry<String,byte[]> pair : map.entrySet()){
zipOutputStream.putNextEntry(new ZipEntry(pair.getKey()));
if(pair.getKey().equals(file.getFileName().toString())){
Files.copy(file,zipOutputStream);
count++;
}else{
zipOutputStream.write(pair.getValue());
}
zipOutputStream.closeEntry();
}
zipOutputStream.putNextEntry(new ZipEntry("new/" + file.getFileName().toString()));
Files.copy(file,zipOutputStream);
zipOutputStream.closeEntry();
}
}
}