You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "alphacome (JIRA)" <ji...@apache.org> on 2017/07/18 12:24:00 UTC
[jira] [Updated] (COMPRESS-417) Decompress tar.gz file failed.
java.io.Exception:Error detected parsing the header
[ https://issues.apache.org/jira/browse/COMPRESS-417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
alphacome updated COMPRESS-417:
-------------------------------
Environment:
{code:java}
public static void deGzipArchive(String filepath,String dir)
throws Exception {
final File input = new File(filepath);
final InputStream is = new FileInputStream(input);
final CompressorInputStream in = new GzipCompressorInputStream(is, true);
TarArchiveInputStream tin = new TarArchiveInputStream(in);
TarArchiveEntry entry = tin.getNextTarEntry();
while (entry != null) {
File archiveEntry = new File(dir, entry.getName());
archiveEntry.getParentFile().mkdirs();
if (entry.isDirectory()) {
archiveEntry.mkdir();
entry = tin.getNextTarEntry();
continue;
}
OutputStream out = new FileOutputStream(archiveEntry);
IOUtils.copy(tin, out);
out.close();
entry = tin.getNextTarEntry();
}
in.close();
tin.close();
}
public static void main(String[] args) throws Exception {
Gztest.deGzipArchive("D:/20000102.0000+0800-20000102.0015+0800_0.tar.gz","D:/");
}
{code}
was:
{code:java}
public static void deGzipArchive(String filepath,String dir)
throws Exception {
final File input = new File(filepath);
final InputStream is = new FileInputStream(input);
final CompressorInputStream in = new GzipCompressorInputStream(is, true);
TarArchiveInputStream tin = new TarArchiveInputStream(in);
TarArchiveEntry entry = tin.getNextTarEntry();
while (entry != null) {
File archiveEntry = new File(dir, entry.getName());
archiveEntry.getParentFile().mkdirs();
if (entry.isDirectory()) {
archiveEntry.mkdir();
entry = tin.getNextTarEntry();
continue;
}
OutputStream out = new FileOutputStream(archiveEntry);
IOUtils.copy(tin, out);
out.close();
entry = tin.getNextTarEntry();
}
in.close();
tin.close();
}
public static void main(String[] args) throws Exception {
Gztest.deGzipArchive("D:/20000102.0000+0800-20000102.0015+0800_0.tar.gz","D:/");
}
{code}
Description:
Can't upload tar.gz file?
The error log:
Exception in thread "main" java.io.IOException: Error detected parsing the header
at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:286)
at gztest.deGzipArchive(gztest.java:23)
at gztest.main(gztest.java:149)
Caused by: java.lang.IllegalArgumentException: Invalid byte 100 at offset 0 in 'dos{NUL}{NUL}{NUL}{NUL}{NUL}' len=8
at org.apache.commons.compress.archivers.tar.TarUtils.parseOctal(TarUtils.java:141)
at org.apache.commons.compress.archivers.tar.TarUtils.parseOctalOrBinary(TarUtils.java:171)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1128)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1091)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.<init>(TarArchiveEntry.java:368)
at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:284)
... 2 more
was:
The error log:
Exception in thread "main" java.io.IOException: Error detected parsing the header
at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:286)
at gztest.deGzipArchive(gztest.java:23)
at gztest.main(gztest.java:149)
Caused by: java.lang.IllegalArgumentException: Invalid byte 100 at offset 0 in 'dos{NUL}{NUL}{NUL}{NUL}{NUL}' len=8
at org.apache.commons.compress.archivers.tar.TarUtils.parseOctal(TarUtils.java:141)
at org.apache.commons.compress.archivers.tar.TarUtils.parseOctalOrBinary(TarUtils.java:171)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1128)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1091)
at org.apache.commons.compress.archivers.tar.TarArchiveEntry.<init>(TarArchiveEntry.java:368)
at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:284)
... 2 more
> Decompress tar.gz file failed. java.io.Exception:Error detected parsing the header
> ----------------------------------------------------------------------------------
>
> Key: COMPRESS-417
> URL: https://issues.apache.org/jira/browse/COMPRESS-417
> Project: Commons Compress
> Issue Type: Bug
> Components: Compressors
> Affects Versions: 1.14
> Environment: {code:java}
> public static void deGzipArchive(String filepath,String dir)
> throws Exception {
> final File input = new File(filepath);
> final InputStream is = new FileInputStream(input);
> final CompressorInputStream in = new GzipCompressorInputStream(is, true);
> TarArchiveInputStream tin = new TarArchiveInputStream(in);
> TarArchiveEntry entry = tin.getNextTarEntry();
> while (entry != null) {
> File archiveEntry = new File(dir, entry.getName());
> archiveEntry.getParentFile().mkdirs();
> if (entry.isDirectory()) {
> archiveEntry.mkdir();
> entry = tin.getNextTarEntry();
> continue;
> }
> OutputStream out = new FileOutputStream(archiveEntry);
> IOUtils.copy(tin, out);
> out.close();
> entry = tin.getNextTarEntry();
> }
> in.close();
> tin.close();
> }
> public static void main(String[] args) throws Exception {
> Gztest.deGzipArchive("D:/20000102.0000+0800-20000102.0015+0800_0.tar.gz","D:/");
> }
> {code}
> Reporter: alphacome
> Priority: Critical
>
> Can't upload tar.gz file?
> The error log:
> Exception in thread "main" java.io.IOException: Error detected parsing the header
> at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:286)
> at gztest.deGzipArchive(gztest.java:23)
> at gztest.main(gztest.java:149)
> Caused by: java.lang.IllegalArgumentException: Invalid byte 100 at offset 0 in 'dos{NUL}{NUL}{NUL}{NUL}{NUL}' len=8
> at org.apache.commons.compress.archivers.tar.TarUtils.parseOctal(TarUtils.java:141)
> at org.apache.commons.compress.archivers.tar.TarUtils.parseOctalOrBinary(TarUtils.java:171)
> at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1128)
> at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:1091)
> at org.apache.commons.compress.archivers.tar.TarArchiveEntry.<init>(TarArchiveEntry.java:368)
> at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:284)
> ... 2 more
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)