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.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
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 {
FileInputStream zipFile = new FileInputStream(args[1]);
ZipInputStream zip = new ZipInputStream(zipFile);
ArrayList<ZipEntry> list = new ArrayList<>();
ArrayList<Path> list1 = new ArrayList<>();
ZipEntry entry;
while ((entry = zip.getNextEntry()) != null)
{
if (("new/" + Paths.get(args[0]).getFileName()).equals(entry.getName()))
{
zip.closeEntry();
}
else
{
list.add(0, entry);
list1.add(0, Files.createTempFile("temp-",".tmp"));
FileOutputStream fileOutputStream = new FileOutputStream(list1.get(0).toFile());
while (zip.available() > 0)
{
fileOutputStream.write(zip.read());
}
fileOutputStream.close();
}
}
zip.close();
zipFile.close();
FileOutputStream zipFile1 = new FileOutputStream(args[1]);
ZipOutputStream zip1 = new ZipOutputStream(zipFile1);
zip1.putNextEntry(new ZipEntry("new/" + Paths.get(args[0]).getFileName()));
Files.copy(Paths.get(args[0]), zip1);
for(int i = 0; i < list.size(); i++)
{
zip1.putNextEntry(new ZipEntry(list.get(i).getName()));
FileInputStream inputStream = new FileInputStream(list1.get(i).toString());
while (inputStream.available() > 0)
{
zip1.write(inputStream.read());
}
inputStream.close();
zip1.closeEntry();
}
zip1.close();
zipFile1.close();
}
}
Если кто-то сможет разъяснить что не так, то буду очень благодарен)Сергей Kingl
26 уровень
Все работает но валидатор ни по одному пункту не принимает(
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Sergey Matyukhin
14 марта 2019, 13:13
Всё хорошо, а задание то какое?
0