Тестируя мой инструмент извлечения tar.gz, я обнаружил исключение:
java.io.EOFException: Unexpected end of ZLIB input stream at java.util.zip.InflaterInputStream.fill(Unknown Source) at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.GZIPInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at it.uniroma2.informatica.specialistica.IO.ScanCompressedFileUtil.main(ScanCompressedFileUtil.java:60
Итак, код в строке 60:
BufferedReader bufLe= reader.remove();
try {
while ( bufLe.ready() ){
System.out.println(" "+bufLe.readLine());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
где вызов buffer.readLine() вызывает исключение. Когда я открываю tar.gz, я сохраняю поток всех отдельных файлов, таких как BuffReader, затем помещаю их в связанный список, а затем закрываю буфер открытого файла tar.gz.
Но когда я вставляю элемент в связанный список, а затем пытаюсь читать построчно, у меня возникает исключение.
Почему у меня это исключение? Может быть, я что-то не так, когда перебираю файлы в tar.gz?
Для этого у меня есть код:
TarInputStream is = new TarInputStream(gzipInputStream);
TarEntry entryx = null;
try {
while((entryx = is.getNextEntry()) != null) {
InputStream tmpInx = new StreamingTarEntry(is, entryx.getSize());
// questo viene invocato perchè il file da lettere è un file txt
manageTxtinsideTAR(tmpInx , buffer);
// I add the stream to a linked list
Класс STREAMINGTARENTRY расширяет FilterInputStream, поэтому он только оборачивает поток.