Ранее у нас было несколько zip-файлов в нашем веб-приложении.Мы бы хотели сократить конкретный текстовый документ в zip-файле.Это не было проблемой:
URL url = getClass().getResource(zipfile);
ZipFile zip = new ZipFile(url.getFile().replaceAll("%20", " "));
Entry entry = zip.getEntry("file.txt");
InputStream is = zip.getInputStream(entry);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while (line != null) {
// do stuff
}
Однако мы переместили эти zip-файлы в другой модуль и хотим упаковать их в банку.К сожалению, создать ZipFile
сейчас не удается.Я могу получить InputStream
для почтового индекса: но у меня нет способа получить поток ввода для самой записи.
InputStream is = getClass().getResourceAsStream(zipfile);
ZipInputStream zis = new ZipInputStream(is);
ZipEntry entry = zis.getNextEntry();
while (entry != null && !entry.getName().equals("file.txt")) {
entry = zis.getNextEntry();
}
, но у меня нет способа получить поток ввода для самой записи.Я попытался найти длину записи и получить следующие n байтов из ZipInputStream
, но у меня это не сработало.Казалось, что все прочитанные байты были 0.
Есть ли способ обойти это или мне придется перенести zip-файлы обратно в основной проект?