Добавление файла в архив

В метод main приходит список аргументов.

Первый аргумент — полный путь к файлу fileName.

Второй аргумент — путь к zip-архиву.

Добавить файл (fileName) внутрь архива в директорию ‘new.

Если в архиве есть файл с таким именем, то заменить его.


Пример входных данных:

C:/result.mp3

C:/pathToTest/test.zip


Файлы внутри test.zip:

a.txt

b.txt


После запуска Solution.main архив test.zip должен иметь такое содержимое:

new/result.mp3

a.txt

b.txt


Подсказка: нужно сначала куда-то сохранить содержимое всех энтри, а потом записать в архив все энтри вместе с добавленным файлом.

Пользоваться файловой системой нельзя.


Требования:

1. В методе main создай ZipInputStream для архивного файла (второй аргумент main). Нужно вычитать из него все содержимое.

2. В методе main создай ZipOutputStream для архивного файла (второй аргумент main).

3. В ZipOutputStream нужно записать содержимое файла, который приходит первым аргументом в main.

4. В ZipOutputStream нужно записать все остальное содержимое, которое было вычитано из ZipInputStream.

5. Потоки для работы с архивом должны быть закрыты.
package com.javarush.task.task31.task3105;

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
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 {
        Path tempFile = Files.createTempFile("", "");
        try (ZipOutputStream zipOutputStream = new ZipOutputStream(Files.newOutputStream(tempFile))) {
            try (ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(Paths.get(args[1])))) {
                ZipEntry zipEntry = zipInputStream.getNextEntry();
                while(zipEntry != null){
                    String name = zipEntry.getName();
                    zipOutputStream.putNextEntry(new ZipEntry(name));

                    while (zipInputStream.available() != 0){
                        zipOutputStream.write(zipInputStream.read());
                    }

                    zipOutputStream.closeEntry();
                    zipInputStream.closeEntry();
                    zipEntry = zipInputStream.getNextEntry();
                }
            }
            try (FileInputStream inputStream = new FileInputStream(args[0])) {
                zipOutputStream.putNextEntry(new ZipEntry("new\\" + Paths.get(args[0]).getFileName()));
                while (inputStream.available() > 0) {
                    zipOutputStream.write(inputStream.read());
                }
                zipOutputStream.closeEntry();
            }
        }

        Files.move(tempFile, Paths.get(args[1]), StandardCopyOption.REPLACE_EXISTING);
    }
}
Тоесть он ни один пункт не принимает! программа работает, добавляет файл в архив, в директорию new, все как в тз..