Hi,
Functionality works as described in the task, but still getting issues with tests.
Please, help
Thanks
package com.codegym.task.task31.task3105;
import java.io.*;
import java.nio.file.CopyOption;
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;
/*
Adding a file to an archive
*/
public class Solution {
public static void main(String[] args) throws IOException {
Path filePath = Paths.get(args[0]);
Path zipFilePath = Paths.get(args[1]);
Map<ZipEntry, byte[]> FileBytesByZipEntries = new HashMap<>();
ZipEntry zipEntry;
try (
FileInputStream fileInputStream = new FileInputStream(zipFilePath.toString());
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
ZipInputStream zipInputStream = new ZipInputStream(bufferedInputStream);
)
{
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
byte[] buffer = new byte[zipInputStream.available()];
zipInputStream.read(buffer);
FileBytesByZipEntries.put(zipEntry, buffer);
}
}
try (BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filePath.toFile()))) {
byte[] buffer = new byte[bufferedInputStream.available()];
bufferedInputStream.read(buffer);
FileBytesByZipEntries.put(new ZipEntry("new/" + filePath.getFileName().toString()), buffer);
}
Files.delete(zipFilePath);
try (
FileOutputStream fileOutputStream = new FileOutputStream(zipFilePath.toString());
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
ZipOutputStream zipOutputStream = new ZipOutputStream(bufferedOutputStream);
)
{
for (Map.Entry<ZipEntry, byte[]> pair : FileBytesByZipEntries.entrySet()) {
zipEntry = new ZipEntry(pair.getKey().getName());
byte[] fileBytes = pair.getValue();
zipOutputStream.putNextEntry(zipEntry);
zipOutputStream.write(fileBytes);
zipOutputStream.closeEntry();
}
}
}
}