标签: gzipoutputstream

GZIP吃了换行符

我有以下代码来压缩和解压缩字符串.

public static byte[] compress(String str)
{
    try
    {
        ByteArrayOutputStream obj = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(obj);
        gzip.write(str.getBytes("UTF-8"));
        gzip.close();
        return obj.toByteArray();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    return null;
}

public static String decompress(byte[] bytes)
{
    try
    {
        GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(bytes));
        BufferedReader bf = new BufferedReader(new InputStreamReader(gis, "UTF-8"));
        StringBuilder outStr = new StringBuilder();
        String line;
        while ((line = bf.readLine()) != null)
        {
            outStr.append(line);
        }
        return outStr.toString();
    }
    catch (IOException e)
    {
        return e.getMessage();
    } …
Run Code Online (Sandbox Code Playgroud)

java gzip gzipoutputstream gzipinputstream

3
推荐指数
2
解决办法
2083
查看次数

在java中使用GZIPOutputStream发送压缩块

我试图通过 java 套接字发送压缩的 HTML 文件,但浏览器显示一个空的 HTML 文件。

问题是,当我尝试发送未压缩的 HTML 时,发现一切正常(是的,我确实相应地修改了 HTTP 标头)。

private void sendResponse(String headers, String body) throws IOException
{   
    BufferedOutputStream output = new BufferedOutputStream(
        this.SOCKET.getOutputStream());
    byte[] byteBody = null;

    // GZIP compression
    if(body != null && this.encoding.contains("gzip"))
    {
        ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
        GZIPOutputStream zipStream = new GZIPOutputStream(byteStream);
        zipStream.write(body.getBytes(this.charset));
        zipStream.flush();
        byteBody = byteStream.toByteArray();
        byteStream.flush();
        byteStream.close();
        zipStream.close();
    }
    else
        byteBody = body.getBytes(this.charset);

    // Sending response
    byte[] msg1 = (Integer.toHexString(byteBody.length) + "\r\n")
        .getBytes(this.charset);
    byte[] msg2 = byteBody;
    byte[] msg3 = …
Run Code Online (Sandbox Code Playgroud)

java http gzipoutputstream

3
推荐指数
1
解决办法
7644
查看次数

java将GZIPOutputStream和ByteArrayOutputStream包装在一起 - 我做错了什么?

Main.java

import java.io.IOException;

public class Main
{

    private final CompressedOutputStream    m_cos;

    public static void main(String[] args)
    {
        try
        {
            final Main m = new Main(new CompressedOutputStream());
            m.run();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    public Main(final CompressedOutputStream cos)
    {
        this.m_cos = cos;
    }

    private void trace(final String format, Object... args)
    {
        final String output = String.format(format, args);
        System.out.println(output);
    }

    public void run()
    {
        this.first_write();
        this.second_write();
        this.trace("CRC32 of data is %x", this.m_cos.get_crc32());
    }

    private void add_data(final byte[] data)
    {
        try …
Run Code Online (Sandbox Code Playgroud)

java compression bytearrayoutputstream gzipoutputstream

2
推荐指数
1
解决办法
3805
查看次数

如何使用 ByteArrayOutputStream 将字符串转换为 GZIP Base64 字符串?

我需要将字符串转换为 gzip base64。我有这个代码

import java.util.zip.GZIPOutputStream;
import org.apache.commons.codec.binary.Base64OutputStream;

public class Test {
    public static void main(String[] args) {
        String text = "a string of characters";
        try {
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            Base64OutputStream b64os = new Base64OutputStream(os);
            GZIPOutputStream gzip = new GZIPOutputStream(b64os);
            gzip.write(text.getBytes("UTF-8"));
            String base64 = new String(os.toByteArray(),"UTF-8");
            gzip.close();
            b64os.close();
            System.out.print(base64)
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要得到H4sIAAAAAAAAAEtUKC4pysxLV8hPU0jOSCxKTC5JLSoGAOP+cfkWAAAA。为什么我得到这个输出?

H4sIAAAAAAAA
Run Code Online (Sandbox Code Playgroud)

java byte gzipoutputstream

1
推荐指数
1
解决办法
1856
查看次数

在try-wtth-resources块中使用GZIPOutputStream对象时,是否需要调用finish()

在try-with-resources [autoclosable]块中使用GZipOutputStream时,我在处理完资源finish()后是否需要显式调用?

java gzipoutputstream autocloseable

1
推荐指数
1
解决办法
862
查看次数

java.io.IOException:请求写入“字节”的请求超出了条目“”字节的标头中的大小

我正在使用创建tar.Gzip文件,GZIPOutputStream并且添加了另一个逻辑,即如果在压缩文件时捕获到任何异常,我的代码将重试3次。

当我抛出一个IOException测试我的重试逻辑时,它抛出下面的异常:
java.io.IOException: request to write '4096' bytes exceeds size in header of '2644' bytes for entry 'Alldbtypes'

我在行上收到异常: org.apache.commons.io.IOUtils.copyLarge(inputStream, tarStream);

private class CompressionStream extends GZIPOutputStream {
    // Use compression levels from the deflator class
    public CompressionStream(OutputStream out, int compressionLevel) throws IOException {
        super(out);
        def.setLevel(compressionLevel);
    }
}

public void createTAR(){
    boolean isSuccessful=false;
    int count = 0;
    int maxTries = 3;
    while(!isSuccessful) {
        InputStream inputStream =null;
        FileOutputStream outputStream =null;
        CompressionStream compressionStream=null;
        OutputStream md5OutputStream = null; …
Run Code Online (Sandbox Code Playgroud)

java apache-commons-io gzipoutputstream

0
推荐指数
1
解决办法
3282
查看次数