Убедился, работает как нужно, либо я не вижу ошики, может кто из вас увидит?
package com.javarush.task.task31.task3105;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.*;
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 {
/*ZipOutputStream testzipout = new ZipOutputStream(new FileOutputStream(args[1]));
testzipout.putNextEntry(new ZipEntry(Paths.get("C:/Users/vladislav.pirogov/Desktop/java_shit/lel.txt").getFileName().toString()));
testzipout.write(Files.readAllBytes(Paths.get("C:/Users/vladislav.pirogov/Desktop/java_shit/lel.txt")));
testzipout.closeEntry();
testzipout.close();*/
HashMap<String, byte[]> zipEntryMap = new HashMap<>();
FileInputStream fileInputStream = new FileInputStream(args[1]);
ZipInputStream zipInputStream = new ZipInputStream(fileInputStream);
ZipEntry temp = null;
while ((temp = zipInputStream.getNextEntry()) != null) {
ByteArrayOutputStream byreout = new ByteArrayOutputStream();
int count = -1;
byte[] buffer = new byte[1024];
while ((count = zipInputStream.read(buffer)) != -1) {
byreout.write(buffer, 0, count);
}
zipEntryMap.put(temp.toString(), byreout.toByteArray());
zipInputStream.closeEntry();
}
zipInputStream.close();
FileOutputStream fileOutputStream = new FileOutputStream(args[1]);
ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
for (Map.Entry<String, byte[]> pair : zipEntryMap.entrySet()) {
if (!Paths.get(pair.getKey()).getFileName().toString().equals(args[0].substring(args[0].lastIndexOf('/') + 1))) {
zipOutputStream.putNextEntry(new ZipEntry(Paths.get(pair.getKey()).getFileName().toString()));
zipOutputStream.write(pair.getValue());
}
}
zipOutputStream.putNextEntry(new ZipEntry("new/" + Paths.get(args[0]).getFileName()));
Files.copy(Paths.get(args[0]), zipOutputStream);
zipOutputStream.close();
}
}