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)