Хотя вроде архивируется(((
package com.javarush.task.task31.task3105;
import java.io.*;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
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 {
// args = new String[]{"Q:\\filetest\\lvl31\\c.txt", "Q:\\filetest\\lvl31\\test.zip"};
ArrayList<String> list = new ArrayList();
ArrayList<byte[]> data = new ArrayList<>();
ArrayList<Byte> f1 = new ArrayList<>();
FileInputStream zipFile = new FileInputStream(args[1]);
ZipInputStream zin = new ZipInputStream(zipFile);
ZipEntry entry;
String[] words = args[0].split("\\\\");
while((entry=zin.getNextEntry())!=null) {
int c;
list.add(entry.getName());
while (zin.available() > 0) {
f1.add((byte)zin.read());
}
byte[] result = new byte[f1.size()-1];
for(int i = 0; i < f1.size()-1; i++) {
result[i] =f1.get(i);
}
data.add(result);
f1.removeAll(f1);
}
list.add("new\\"+words[words.length-1]);
FileInputStream fis = new FileInputStream(args[0]);
// data.add(fis.readAllBytes());
while (fis.available() > 0) {
f1.add((byte)fis.read());
}
byte[] result = new byte[f1.size()];
for(int i = 0; i < f1.size(); i++) {
result[i] =f1.get(i);
}
data.add(result);
f1.removeAll(f1);
ZipOutputStream zout = new ZipOutputStream(new FileOutputStream(args[1]));
for (int i=0;i<list.size();i++){
entry= new ZipEntry(list.get(i));
zout.putNextEntry(entry);
zout.write(data.get(i));
}
zout.closeEntry();
zout.close();
}
}