commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Bodewig (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COMPRESS-417) Decompress tar.gz file failed. java.io.Exception:Error detected parsing the header
Date Tue, 18 Jul 2017 15:20:00 GMT

    [ https://issues.apache.org/jira/browse/COMPRESS-417?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16091703#comment-16091703
] 

Stefan Bodewig commented on COMPRESS-417:
-----------------------------------------

Many thanks. Have you tried unarchiving the file without gzip compression, i.e. gunzip on
the command line and read the resulting tar? That way we may know whether gzip or tar is to
blame.

I should be able to look into this sometime later this week, but maybe the experiment may
provide a useful workaround.

> 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
>            Reporter: alphacome
>            Priority: Critical
>         Attachments: 20000102.0000+0800-20000102.0015+0800_0.tar.gz
>
>
> {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}
> the tar.gz file can be decompressed in linux environment use 'tar' command.
> 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)

Mime
View raw message