Задача выполняет требования но не валидируется
package com.javarush.task.task31.task3105;
import java.io.*;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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 {
// args = new String[]{"Q:/filetest/lvl31/c.txt", "Q:/filetest/lvl31/test.zip"};
FileInputStream zipFile = new FileInputStream(args[1]);
ZipInputStream zin = new ZipInputStream(zipFile);
HashMap<String, byte[]> allFile = new HashMap<>();
ByteArrayOutputStream xx = new ByteArrayOutputStream();
ZipEntry entry;
entry = zin.getNextEntry();
String[] words = args[0].split("/");
int x =1024; // Размер буфера
byte[] dataBytes = new byte[x];
while (entry != null) {
int amountData = 0;
while (amountData != -1) {
amountData = zin.read(dataBytes, 0, x);
if (amountData == x) xx.write(dataBytes);
if (amountData < x && amountData>0) {
byte[] dataBytes1023 = new byte[amountData];
for (int i = 0; i < amountData; i++) dataBytes1023[i] = dataBytes[i];
xx.write(dataBytes1023);
// dataFile.add(dataBytes1023.clone());
}
}
allFile.put(entry.getName(), xx.toByteArray());
// dataFile.clear();
entry = zin.getNextEntry();
xx.reset();
}
zipFile.close();
zin.close();
FileInputStream fis = new FileInputStream(args[0]);
int amountData = 0;
while (amountData != -1) {
amountData = fis.read(dataBytes, 0, x);
if (amountData == x) xx.write(dataBytes);
if (amountData < x && amountData>0) {
byte[] dataBytes1023 = new byte[amountData];
for (int i = 0; i < amountData; i++) dataBytes1023[i] = dataBytes[i];
xx.write(dataBytes1023);
}
}
allFile.put("new/" + words[words.length - 1], xx.toByteArray());
// dataFile.clear();
ZipOutputStream zout = new ZipOutputStream(new FileOutputStream(args[1]));
for (Map.Entry<String, byte[]> pair : allFile.entrySet()) {
String key = pair.getKey(); //ключ
byte[] value = pair.getValue(); //значение
entry = new ZipEntry(key);
zout.putNextEntry(entry);
zout.write(value);
}
zout.closeEntry();
zout.close();
}
}