小编Mas*_*mmy的帖子

GZIP压缩为字节数组

我正在尝试编写一个可以压缩数据的类.下面的代码失败(没有抛出异常,但目标.gz文件为空.)
此外:我不想直接生成.gz文件,就像在所有示例中一样.我只想获取压缩数据,以便我可以在将数据写入文件之前对其进行加密.

如果我直接写一个文件一切正常:

import java.io.*;
import java.util.zip.*;
import java.nio.charset.*;

public class Zipper
{
  public static void main(String[] args)
  {    
    byte[] dataToCompress = "This is the test data."
      .getBytes(StandardCharsets.ISO_8859_1);

    GZIPOutputStream zipStream = null;
    FileOutputStream fileStream = null;
    try
    {
      fileStream = new FileOutputStream("C:/Users/UserName/Desktop/zip_file.gz");
      zipStream = new GZIPOutputStream(fileStream);
      zipStream.write(dataToCompress);

      fileStream.write(compressedData);
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
    finally
    {
      try{ zipStream.close(); }
        catch(Exception e){ }
      try{ fileStream.close(); }
        catch(Exception e){ }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想"绕过"它到字节数组流,它不会产生单个字节 - compressedData总是为空.

import java.io.*;
import java.util.zip.*;
import …
Run Code Online (Sandbox Code Playgroud)

java android gzip stream

17
推荐指数
3
解决办法
5万
查看次数

标签 统计

android ×1

gzip ×1

java ×1

stream ×1