Olá a todos,
Tenho um arquivo tar que dentro dele existe um gz com alguns arquivos. Nao quero descompactar somente ler o conteudo do arquivo que apesar de nao ser um xml o mesmo é estruturado atraves de tags, quero ler o arquivo usando o SAXBuilder, já efetuei o teste com um arquivo descompactado e é possivel ler o arquivo normalmente. Bom agora vamos ao problema, vejam:
Tenho uma classe que tem um método onde passo um InputStream que no caso é o arquivo TAR. Como este arquivo possui varios arquivos GZ, percorro ele até achar o arquivo GZ que eu quero, então processo este ultimo. Quero que para cada entrada do meu TarInputStream seja carregado o arquivo, porém nao consigo fazer isto, segue o meu método:
public void getProfilePortDirectory(InputStream in) throws IOException, JDOMException {
TarInputStreamGvt tin = new TarInputStreamGvt(in);
List<TarInputStreamGvt> tarProfilesPort = new ArrayList<TarInputStreamGvt>();
TarEntry tarEntry = tin.getNextEntry();
GZIPInputStream gzip = null;
ZipEntry zipEntry;
while (tarEntry != null) {
if (tarEntry.getName().matches("profiles/Adsl2PortProfile.tar.gz")) {
gzip = new GZIPInputStream(tin);
break;
}
tarEntry = tin.getNextEntry();
}
TarInputStreamGvt tarPort = new TarInputStreamGvt(gzip);
TarEntry tarEntryPort = tarPort.getNextEntry();
while (tarEntryPort != null) {
Document d = new SAXBuilder().build(tarPort);
tarEntryPort = tarPort.getNextEntry();
}
tin.close();
tarPort.close();
}
Na linha onde eu faço o buid estou recebendo a seguinte exception:
Exception in thread "main" java.io.IOException: reading from an output buffer
Nao entendo pq o meu TarInputStreamGvt é de certa forma uma implementação de um InputStream já que ele herda da classe TarInputStream da lib javatar. Outro detalhe interessante é que eu consigo ler byte a byte e mostrar o conteudo, mas colocando no build o TarInputStreamGvt nao funciona, algum sabe o que pode estar ocorrendo?
Att,
Paulo