3 回答
TA贡献1864条经验 获得超2个赞
执行类似操作解决了问题:
TarArchiveEntry entry = tarInput.getNextTarEntry();byte[] content = new byte[entry.getSize()];
LOOP UNTIL entry.getSize() HAS BEEN READ {
tarInput.read(content, offset, content.length - offset);
}TA贡献1805条经验 获得超10个赞
您可以使用阿帕奇共享资源压缩,如下所示(参考):TarArchiveInputStream
TarArchiveInputStream input = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream("C:\\Users\\User\\Desktop\\Books\\test\\CoverLetter-Version2.gz")));
TarArchiveEntry entry = input.getNextTarEntry();
System.out.println(entry.getName()); // prints the name of file inside the tar
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
while (entry != null) {
br = new BufferedReader(new InputStreamReader(input)); // Read directly from tarInput
System.out.println("For File = " + currentEntry.getName());
String line;
while ((line = br.readLine()) != null) {
System.out.println("line="+line);
}
entry = input.getNextTarEntry();
}
TA贡献1810条经验 获得超4个赞
Try to read directly from inputstream:
BufferedReader br = null;
while(tarEntry != null){
br = new BufferedReader(new InputStreamReader(tarEntry));添加回答
举报
