Говорит, что долго работает, но я старался следовать рекомендациям с
SequenceInputStream и прочими буферами. Подскажите, где проглядел.package com.javarush.task.task31.task3106;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.zip.ZipInputStream;
/*
Разархивируем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
File resultFile = new File(args[0]);
BufferedWriter resultWriter = new BufferedWriter(new FileWriter(resultFile));
Arrays.sort(args, 1, args.length - 1);
List<InputStream> inputStreams = new ArrayList<>();
for (int i = 1; i < args.length; i++) {
inputStreams.add(new FileInputStream(args[i]));
}
SequenceInputStream seqIn = new SequenceInputStream(Collections.enumeration(inputStreams));
ZipInputStream zipIn = new ZipInputStream(seqIn);
while (zipIn.available() == 1) {
byte[] buffer = new byte[1000];
int data = zipIn.read(buffer);
resultWriter.write(data);
resultWriter.flush();
}
resultWriter.close();
}
}
ZipInputStreamвbuffer. Предполагаю, что я вresultWriterдолжен передатьbuffer, но не понимаю, почему ошибка с сортировкой. Почему?ByteArrayInputStreamпри чтении возвращает целочисленное представление байта типаint, которые не нуждается в приведении к типуbyte. Исходя из этого,zipInputStreamчитает сколько может, наполняя массив байт, затемbufferInStreamзаписывает все байты, которые, в свою очередь,ByteArrayInputStreamсчитывает изbuffer, передавая интовые представления байтов на запись в файлresultWriter'ом. Описанное, приведено в коде ниже: Не могу найти ошибку.Collections.enumeration()возвращает объект типаEnumeration. Он нужен, чтобы использоватьSequenceInputStream. А разве нельзя скопом прочесть весьZipInputStream?