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));
添加回答
舉報