Сначала валидатор как у всех выдавал ошибку в п.4 Теперь уже ошибок не выдает - тупо виснет.
На тестовых данных все работает нормально - все заменяется, если нужно добавляется и т.д.
Подскажите - чего ему не хватает ?
package com.javarush.task.task31.task3105;
import java.io.*;
import java.nio.file.Files;
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 {
String fileName = args[0];
File file = new File(fileName);
String zipName = args[1];
Map<String,byte[]> tempArhive = new HashMap<>();
ZipInputStream zipIN = new ZipInputStream(new FileInputStream(zipName));
ZipEntry entry;
while ((entry = zipIN.getNextEntry())!=null){
// while (Zipreader.available()>0){
// entry = Zipreader.getNextEntry();
// byte [] buffer = new byte[(int) entry.getSize()-1];
byte [] buffer = new byte[1];
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int count;
while ((count = zipIN.read(buffer)) != -1) {
byteArrayOutputStream.write(buffer, 0, count);
}
tempArhive.put(entry.getName(),byteArrayOutputStream.toByteArray());
zipIN.closeEntry();
}
zipIN.close();
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipName));
// }
boolean prz = false;
for(Map.Entry<String, byte[]> pair : tempArhive.entrySet()){
String name = pair.getKey();
zipOut.putNextEntry(new ZipEntry(name));
if (name.substring(name.lastIndexOf("/") + 1).equals(fileName.substring(fileName.lastIndexOf("\\") + 1))) { // производим проверку на наличие файла с именем args[0]
prz = true;
Files.copy(Paths.get(fileName), zipOut);
zipOut.closeEntry();
} else {
zipOut.write(pair.getValue());
zipOut.closeEntry();
}
}
if (!prz) {
zipOut.putNextEntry(new ZipEntry("new/" + Paths.get(args[0]).getFileName()));
Files.copy(Paths.get(fileName), zipOut);
zipOut.closeEntry();
}
zipOut.close();
}
}