如何用java读取php的gzencode函数输出的压缩字符?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

如何用java读取php的gzencode函数输出的压缩字符?

2016-03-06 09:47:11 3831 1

输入的字符串为php的gzencode压缩的字符串,可以用gzdecode解开,但是用java的java.util.zip.GZIPInputStream读入字符串时,总是提示:
java.util.zip.ZipException: Not in GZIP format
希望有经验的朋友帮我解答一下,我的代码如下:
JAVA

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class Gzdecode {
    public static void decompress(InputStream is, OutputStream os)
            throws Exception {
        GZIPInputStream gis = new GZIPInputStream(is);
        int count;
        byte data[] = new byte[BUFFER];
        while ((count = gis.read(data, 0, BUFFER)) != -1) {
            os.write(data, 0, count);
        }
        gis.close();
    }
    public static byte[] decompress(byte[] data) throws Exception {  
        ByteArrayInputStream bais = new ByteArrayInputStream(data);  
        ByteArrayOutputStream baos = new ByteArrayOutputStream();   
        // 解压缩   
        decompress(bais, baos);   
        data = baos.toByteArray();  
        baos.flush();  
        baos.close();   
        bais.close();   
        return data;  
    }
        public static void main(String[] args) throws Exception
    {
        String input="";
        byte[] data=input.getBytes("UTF-8");
        byte[] data_decompress=decompress(data);
        System.out.write(data_decompress);
取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 18:54:02

    java的GZIPInputStream会检查头部是否两个字节0x8b1f(魔数)。如果不是,就会抛这个错, 还有你的程序有个明显的错误
    byte[] data=input.getBytes("UTF-8"); //这里并不是把你输入的8B1F转成2个bytes的数组,而是转成四个byte对应的56,66,49,70
    //,你需要的是一个装换字符成byte的类,提醒一下apache common codec有这个API

    0 0
相关问答

0

回答

Java性能调优,使用java读取excel文件指定内容性能最快的做法是什么?

2021-11-07 21:43:06 1136浏览量 回答数 0

0

回答

请问使用java读取XML属性性能最优的做法是什么?

2021-11-07 11:14:26 164浏览量 回答数 0

0

回答

请问向java ArrayList集合对象中某个指定位置加入一个字符串,有没有性能更快的做法?

2021-11-12 17:12:10 185浏览量 回答数 0

0

回答

请问在java中都说IO复用对性能有很大的提高,实现IO复用的方法是什么?

2021-11-07 13:12:53 115浏览量 回答数 0

1

回答

请问读取java ArrayList集合对象中的最后一个元素,有没有性能更快的做法?

2021-11-07 15:53:54 278浏览量 回答数 1

0

回答

请问java垃圾收集是否对系统的性能有决定性的影响?

2021-11-12 17:21:46 88浏览量 回答数 0

0

回答

请问在java中在单线程中使用同步代码块是否会影响应用程序的性能?

2021-11-12 17:21:21 221浏览量 回答数 0

0

回答

请问获取 java ArrayList集合中的最大值,有没有性能更快的做法?

2021-11-07 15:55:06 374浏览量 回答数 0

1

回答

请问java应用程序查询物化视图时性能较慢,该如何优化呢?

2021-11-07 14:07:52 1214浏览量 回答数 1

0

回答

Java性能调优,在java ArrayList集合中删除某个指定的对象,有没有性能更快的做法?

2021-11-07 19:06:28 443浏览量 回答数 0
文章
问答
问答排行榜
最热
最新
相关电子书
更多
JAVA反射原理以及一些常见的应用
立即下载
yqdh_58c127bb3e4...1510402406.pdf
立即下载
复杂PHP系统性能瓶颈排查及优化
立即下载