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 Wed, 19 Jul 2017 11:11:01 GMT

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

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

The archive contains the value "dos" where the "major device number" is expected in ustar
tar archives. After reading what the GNU tar and BSD tar pages say, we should probably ignore
devmajor and devminor unless the file type is a character or block special file.

> 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: Archivers
>    Affects Versions: 1.14
>            Reporter: alphacome
>            Priority: Critical
>              Labels: tar
>             Fix For: 1.15
>
>         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