.
package com.javarush.task.task31.task3105;
import java.io.*;
import java.nio.file.*;
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 {
Map<String, byte[]> mapFiles = new HashMap<>();
try (FileInputStream input = new FileInputStream(args[1]);
ZipInputStream zipInput = new ZipInputStream(input)) {
ZipEntry entry = zipInput.getNextEntry();
while(entry!=null) {
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
int readByte;
while ((readByte = input.read())>0) {
byteArray.write(readByte);
}
mapFiles.put(entry.getName(), byteArray.toByteArray());
entry = zipInput.getNextEntry();
}
}
ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(args[1]));
Path file = Paths.get(args[0]);
zip.putNextEntry(new ZipEntry("new/" + file.getFileName()));
Files.copy(file, zip);
for (Map.Entry<String, byte[]> pair : mapFiles.entrySet()) {
if (!pair.getKey().equals("new/" + file.getFileName())) {
ZipEntry zipEntry = new ZipEntry(pair.getKey());
zip.putNextEntry(zipEntry);
zip.write(pair.getValue());
zip.closeEntry();
}
}
zip.close();
}
}