Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ZLIB流大csv文件意外结束_Java_Csv_Zlib_Compression - Fatal编程技术网

Java ZLIB流大csv文件意外结束

Java ZLIB流大csv文件意外结束,java,csv,zlib,compression,Java,Csv,Zlib,Compression,我正在尝试解压一个csv文件,它的格式是name.csv.gz,我想它有点像600M压缩,解压时我们会说一些大概是7Gb byte[] buffer = new byte[4096]; try { GZIPInputStream gzis = new GZIPInputStream(new FileInputStream("/run/media/justin/DATA/2000000033673205_53848.TEST_SCHEDULE_GCO.20180706.090850

我正在尝试解压一个csv文件,它的格式是
name.csv.gz
,我想它有点像
600M
压缩,解压时我们会说一些大概是
7Gb

byte[] buffer = new byte[4096];
try {
        GZIPInputStream gzis = new GZIPInputStream(new FileInputStream("/run/media/justin/DATA/2000000033673205_53848.TEST_SCHEDULE_GCO.20180706.090850.2000000033673205.x04q13.csv.gz"));

        FileOutputStream out = new FileOutputStream("/run/media/justin/DATA/unzipped.txt");

        int len;

        while((len = gzis.read(buffer)) > 0) {
            out.write(buffer,0,len);
        }

        gzis.close();
        out.close();
        System.out.println("DONE!!");
    } catch(IOException e) {e.printStackTrace();}
这是我用来解压它的代码,在最后,我得到了错误
ZLIB stream的意外结束
,并且我在文件的末尾丢失了几百万行。我还没有在谷歌上找到任何能引领我走向繁荣的方向的东西,所以非常感谢您的帮助

编辑:我忘记了顶部的一行代码(*facepalm)另外,我已经将缓冲区大小从2048增加到4096,解压后我得到了更多的行,那么我是否正确地假设我没有分配足够大的缓冲区?(或者这是一个天真的假设?)

我已经增加了缓冲区大小,从2048增加到4096,解压后我得到了更多的行,所以我假设我没有分配足够大的缓冲区是正确的吗?(或者这是一个天真的假设?)

这不是缓冲区大小的问题,而是GZIPInputStream.read()方法的问题。缓冲区大小仅声明while循环读取和写入的“频率”,从而导致
更大的缓冲区=>更高的传输速率=>更少的循环


您的问题在GZIPInputStream类中,或者与使用过的文件有关,可以先尝试较小的文件。

对我来说很好。可能是.gz文件有问题?你是如何创建的?这个文件是给我的,我不知道它是如何创建的……还有什么可以解压这个文件,比如
unzip
7zip
?如果没有,您的zip文件已损坏。是否可以尝试使用普通工具将其解包,并查看是否发生任何错误?如果没有发生错误,您可以再次创建包文件并尝试itIf gunzip,如果gunzip产生相同的错误,那么问题就出在文件上。