файлы оставляет, если открыть и посмотреть самому, но при повторном запуске он не может определить размер этих файлов. Думаю, что в этом проблема, но как и с чем она связана? Скорее всего, что то не закрыл...
package com.javarush.task.task31.task3105;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
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 {
// System.out.println("1 " + args[1]);
// System.out.println("2 " + args[0]);
FileInputStream fO = new FileInputStream(args[1]);
ZipInputStream zS = new ZipInputStream(fO);
HashMap<String, byte[]> hm = new HashMap<>();
ZipEntry ze = null;
while ((ze = zS.getNextEntry()) != null) {
// System.out.println("000 " + ze.getName());
if (ze != null ) {
System.out.println("Size " + ze.getSize());
byte[] b = new byte[(int) ze.getSize()];
zS.read(b, 0, (int) ze.getSize());
hm.put(ze.getName(), b);
// System.out.println("a: " + ze.getName());
// System.out.println("b: " + new String(hm.get(ze.getName())));
}
}
zS.close();
FileOutputStream fOS = new FileOutputStream(args[1]);
ZipOutputStream zOS = new ZipOutputStream(fOS);
zOS.putNextEntry(new ZipEntry("new/result.mp3"));
Files.copy(Paths.get(args[0]), zOS);
zOS.closeEntry();
for (String k : hm.keySet()) {
zOS.putNextEntry(new ZipEntry(k));
zOS.write(hm.get(k), 0, hm.get(k).length);
zOS.closeEntry();
}
zOS.close();
}
}