Никак не могу понять как решить проблему записи одинаковых файлов в ZipEntry на 56 строке. Просьба если знаете написать правильный ответ(Если будет нетрудно то с объяснением)
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.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 {
String pathToFileName = args[0];
String pathToZipFile = args[1];
Path path = Paths.get(pathToFileName);
//Создание мапы, в которой храняться имена и содержимое фалов из архива
Map<String, ByteArrayOutputStream> tempFiles = new LinkedHashMap<>();
//Создание zip-потока для записи файлов из архива
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(pathToZipFile))) {
ZipEntry zipEntry;
//Чтение содержимого архива в tempFiles
while ((zipEntry = zis.getNextEntry()) != null) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = zis.read();
while (count != -1) {
bos.write(buffer, 0, count);
count = zis.read(buffer);
}
tempFiles.put(zipEntry.getName(), bos);
}
}
//Создание потока для записи файлов из tempFiles
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(pathToZipFile))) {
ZipEntry zipEntry;
//Добавление файла args[0] в архив
zipEntry = new ZipEntry("new/" + path.getFileName());
zos.putNextEntry(zipEntry);
Files.copy(path, zos);
zos.closeEntry();
//Запись файлов из map в архив
for (Map.Entry<String, ByteArrayOutputStream> entry : tempFiles.entrySet()) {
zos.putNextEntry(new ZipEntry(entry.getKey()));
zos.write(entry.getValue().toByteArray());
zos.closeEntry();
}
}
}
}