JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Что не нравится валику не понимаю, в идее все работает от...
Nikola
41 уровень
  • 05.11.2021
  • 403просмотров
  • 1комментарий

Что не нравится валику не понимаю, в идее все работает отлично. Помогите пожалуйста

Вопрос по задаче Разархивируем файл
Java Collections,  1 уровень,  6 лекция
Решен


В метод main приходит список аргументов.
Первый аргумент - имя результирующего файла resultFileName, остальные аргументы - имена файлов fileNamePart.
Каждый файл (fileNamePart) - это кусочек zip архива. Нужно разархивировать целый файл, собрав его из кусочков.
Записать разархивированный файл в resultFileName.
Архив внутри может содержать файл большой длины, например, 50Mb.
Внутри архива может содержаться файл с любым именем.

Пример входных данных. Внутри архива находится один файл с именем abc.mp3:
C:/result.mp3
C:/pathToTest/test.zip.003
C:/pathToTest/test.zip.001
C:/pathToTest/test.zip.004
C:/pathToTest/test.zip.002

Требования:
  • В методе main нужно создать ZipInputStream для архива, собранного из кусочков файлов. Файлы приходят аргументами в main, начиная со второго.
  • Создай поток для записи в файл, который приходит первым аргументом в main. Запиши туда содержимое файла из архива.
  • Поток для чтения из архива должен быть закрыт.
  • Поток для записи в файл должен быть закрыт.
package com.javarush.task.task31.task3106; import java.io.*; import java.nio.file.Files; import java.util.*; import java.util.zip.ZipInputStream; /* Разархивируем файл */ public class Solution { public static void main(String[] args) throws IOException { String resultFileName = args[0]; File resultFile = new File(resultFileName); if (!resultFile.exists()) Files.createFile(resultFile.toPath()); Set<String> zipFileSet = new TreeSet<>(Arrays.asList(args).subList(1, args.length)); List<FileInputStream> fisList = new ArrayList<>(); //zipFileSet.forEach(System.out::println); for (String s : zipFileSet) { fisList.add(new FileInputStream(s)); } try (ZipInputStream zis = new ZipInputStream(new SequenceInputStream(Collections.enumeration(fisList)))) { while (zis.getNextEntry() != null) { try (OutputStream os = new BufferedOutputStream(new FileOutputStream(resultFile))) { final int bufSize = 1024; byte[] buffer = new byte[bufSize]; int count; while ((count = zis.read(buffer)) != -1){ os.write(buffer, 0, count); } os.flush(); } } } } }
0
Комментарии (1)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Nikola
Уровень 41
5 ноября 2021, 15:20решение
Переместил OutputStream в первый try, второй удалил и все принял наконец-то валик
+3
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush