локально все работатет, но валидатор не принимает
package com.javarush.task.task31.task3105;
import java.io.*;
import java.nio.file.Files;
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 {
String fileName = args[0];
String zipFileName = args[1];
// String fileName = "C:\\Java\\Test\\111.txt";
// String zipFileName = "C:\\Java\\Test\\113.zip";
Map<String, byte[]> map = new HashMap<>();
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFileName));
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
byte[] data = new byte[(int) entry.getSize() > 0 ? (int) entry.getSize() : 0];
zis.read(data);
map.put(entry.getName(), data);
zis.closeEntry();
}
zis.close();
boolean additionalFileRecorded = false;
File additionalFile = new File(fileName);
String nameAdditionalFile = additionalFile.getName();
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFileName));
for (Map.Entry<String, byte[]> pair : map.entrySet()) {
if(pair.getKey().contains(nameAdditionalFile)){
zos.putNextEntry(new ZipEntry(pair.getKey()));
Files.copy(additionalFile.toPath(), zos);
zos.closeEntry();
additionalFileRecorded = true;
continue;
}
zos.putNextEntry(new ZipEntry(pair.getKey()));
zos.write(pair.getValue());
zos.closeEntry();
}
if(!additionalFileRecorded){
zos.putNextEntry(new ZipEntry("new\\" + nameAdditionalFile));
Files.copy(additionalFile.toPath(), zos);
zos.closeEntry();
}
zos.close();
}
}