Резюме: Имея байт изображения из a.zip
, который содержит a.txt
, как я могу получить чистый и правильный читатель, который возвращает строки текстового файла?Читатель для получения текстовых строк из текстового файла архивного
Я загружаю изображение zip-файла с веб-службы в byte[] content
. Я хотел бы написать метод, как
private BufferedReader contentToBufferedReader(byte[] content)
, который возвращает читателя, который может быть использован как
reader = contentToBufferedReader(content);
while ((line = reader.readLine()) != null) {
processThe(line);
}
reader.close()
До сих пор у меня есть (обновленный)
private BufferedReader contentToBufferedReader(byte[] content) {
ByteArrayInputStream bais = new ByteArrayInputStream(content);
ZipInputStream zipStream = new ZipInputStream(bais);
BufferedReader reader = null;
try {
ZipEntry entry = zipStream.getNextEntry();
// I need only the first (and the only) entry from the zip file.
if (entry != null) {
reader = new BufferedReader(new InputStreamReader(zipStream, "UTF-8"));
System.out.println("contentToBufferedReader(): success");
}
}
catch (IOException e) {
System.out.println("contentToBufferedReader(): failed...");
System.out.println(e.getMessage());
}
return reader;
}
I я не уверен, как закрыть весь объект потока, когда что-то не получается. Более того, я не уверен, как их закрыть, если reader
был успешно возвращен, использован и закрыт.
Возможный дубликат [Чтение текстовых файлов в zip-архиве] (http://stackoverflow.com/questions/4473256/reading-text-files-in-a-zip-archive) –
Спасибо, Катя, за подсказку о том, как украсить ' zipStream'. Я изменил вопрос, чтобы он не считался дубликатом упомянутого вами вопроса. – pepr