InputStream in = new SequenceInputStream(new SequenceEnumaerator(files));
вот тут я создаю поток
Если разрежу текстовый файл из 8 байт из одних двоек и создам 4 файла по 2 байта
и подсуну вот такой код
int data;
while ((data=in.read()) !=-1){
System.out.println((char)data);
}
то он мне печатает 8 двоек
но как только я этот поток передаю сюда
ZipInputStream zin = new ZipInputStream(in);
он у меня просто теряется я же вроде его передал куда он пропал
Help!!!
package com.javarush.task.task31.task3106;
import java.io.*;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/*
Разархивируем файл
*/
public class Solution {
public static void main(String[] args) throws IOException {
// args = new String[] {"C:\\11\\test.txt","C:\\11\\4.001","C:\\11\\4.002"};
TreeSet<String> name = new TreeSet<>();
for (int i = 1; i < args.length; i++)
name.add(args[i]);
int index1 = name.first().indexOf(".001");
String firstPartName = name.first().substring(0, index1);
// String firstPartName = "C:\\11\\1.zip";
System.out.println(firstPartName);
Vector<String> files = new Vector<>();
for (String state : name) {
files.add(state);
}
InputStream in = new SequenceInputStream(new SequenceEnumaerator(files));
// StringBuilder sb = new StringBuilder();
// int data;
// while ((data = in.read()) != -1) {
// sb.append((char) data);
// }
String resultFileName = args[0];
// firstPartName = "C:\\11\\1.zip";
ZipInputStream zin = new ZipInputStream(in);
// String name1;
// name1 = entry.getName(); // получим название файла
// size=entry.getSize(); // получим его размер в байтах
// System.out.printf("File name: %s \t File size: %d \n", name1, size);
// распаковка
// FileOutputStream fout = new FileOutputStream(name1);
FileOutputStream fout = new FileOutputStream(resultFileName);
for (int c = zin.read(); c != -1; c = zin.read()) {
fout.write(c);
}
fout.flush();
fout.close();
in.close();
}
}
class SequenceEnumaerator implements Enumeration<FileInputStream> {
private Enumeration<String> files;
public SequenceEnumaerator(Vector<String> files) {
this.files = files.elements();
}
@Override
public boolean hasMoreElements() {
return files.hasMoreElements();
}
@Override
public FileInputStream nextElement() {
try {
return new FileInputStream(files.nextElement());
} catch (FileNotFoundException e) {
return null;
}
}
}