任何人都可以推荐我是否应该这样做:
os = new GzipOutputStream(new BufferedOutputStream(...));
Run Code Online (Sandbox Code Playgroud)
要么
os = new BufferedOutputStream(new GzipOutputStream(...));
Run Code Online (Sandbox Code Playgroud)
哪个更有效率?我应该使用BufferedOutputStream吗?
我们正在开发一个程序,我们需要刷新(强制压缩和发送数据)GZIPOutputStream.问题是,GZIPOutputStream的flush方法不能按预期工作(强制压缩和发送数据),而是Stream等待更多数据进行有效的数据压缩.
当您调用完成时,数据将被压缩并通过输出流发送,但GZIPOutputStream(不是基础流)将被关闭,因此我们无法写入更多数据,直到我们创建新的GZIPOutputStream,这会花费时间和性能.
希望任何人都可以提供帮助.
最好的祝福.
GZIPOutputStream
只是一个子类,DeflaterOutputStream
但都可以实例化.我何时使用一个而不是另一个?压缩是一样的吗?
我试过搜索,找不到任何东西.我正在尝试做的是我循环遍历一个列表,我正在从多个列表中的项目组合构造一个字符串.然后我想将这些字符串转储到gzip压缩文件.我得到它只是将它转储到一个简单的ascii文本文件,但我似乎无法让它与gzipoutputstream一起工作.基本上,
循环创建字符串转储字符串到gzipped文件endloop
如果可能的话,我想避免转储到纯文本文件然后gzipping它,因为这些文件将几乎100兆.
我有一种情况,servlet正在向PHP脚本提供压缩数据.我压缩Java端的数据没问题,但PHP似乎无法解压缩.
以下是Java Side的相关代码片段:
OutputStream o=response.getOutputStream();
GZIPOutputStream gz=new GZIPOutputStream(o);
gz.write(GridCoder.encode(rs,id, perPage, page).getBytes());
gz.close();
o.close();
Run Code Online (Sandbox Code Playgroud)
PHP方面:
$xml= gzuncompress($xml);
Run Code Online (Sandbox Code Playgroud)
有人可以指出我正确的方向.
如何使用GZip压缩和解压缩android中的文件.请提供一些参考,以便对我有很大的帮助.
提前致谢
我的代码有问题:
private static String compress(String str)
{
String str1 = null;
ByteArrayOutputStream bos = null;
try
{
bos = new ByteArrayOutputStream();
BufferedOutputStream dest = null;
byte b[] = str.getBytes();
GZIPOutputStream gz = new GZIPOutputStream(bos,b.length);
gz.write(b,0,b.length);
bos.close();
gz.close();
}
catch(Exception e) {
System.out.println(e);
e.printStackTrace();
}
byte b1[] = bos.toByteArray();
return new String(b1);
}
private static String deCompress(String str)
{
String s1 = null;
try
{
byte b[] = str.getBytes();
InputStream bais = new ByteArrayInputStream(b);
GZIPInputStream gs = new GZIPInputStream(bais);
ByteArrayOutputStream baos …
Run Code Online (Sandbox Code Playgroud) 我GZIPOutputStream
在Java程序中使用它来压缩大字符串,最后将其存储在数据库中。
我看到在压缩英文文本时,我实现了1/4到1/10的压缩比(取决于字符串值)。例如,假设我的原始英文文本为100kb,那么平均压缩文本大约为30kb。
但是当我压缩unicode字符时,压缩的字符串实际上比原始字符串占用更多的字节。举例来说,我的原始unicode字符串为100kb,然后压缩版本为200kb。
Unicode字符串示例: "?????????????for.Hi???"
谁能建议我也如何实现unicode文本的压缩?为什么压缩版本实际上比原始版本大?
我在Java中的压缩代码:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream zos = new GZIPOutputStream(baos);
zos.write(text.getBytes("UTF-8"));
zos.finish();
zos.flush();
byte[] udpBuffer = baos.toByteArray();
Run Code Online (Sandbox Code Playgroud) 首先,我的Java版本:
string str = "helloworld";
ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream(str.length());
GZIPOutputStream localGZIPOutputStream = new GZIPOutputStream(localByteArrayOutputStream);
localGZIPOutputStream.write(str.getBytes("UTF-8"));
localGZIPOutputStream.close();
localByteArrayOutputStream.close();
for(int i = 0;i < localByteArrayOutputStream.toByteArray().length;i ++){
System.out.println(localByteArrayOutputStream.toByteArray()[i]);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
31 -117 8 0 0 0 0 0 0 0 -53 72 -51 -55 -55 47 -49 47 -54 73 1 0 -83 32 -21 -7 10 0 0 0
那么Go版本:
var gzBf bytes.Buffer
gzSizeBf := bufio.NewWriterSize(&gzBf, len(str))
gz := gzip.NewWriter(gzSizeBf)
gz.Write([]byte(str))
gz.Flush()
gz.Close()
gzSizeBf.Flush()
GB := (&gzBf).Bytes()
for i := 0; …
Run Code Online (Sandbox Code Playgroud) 是否有一个GZIPOutputStream的实现,可以在一个单独的线程中进行繁重的工作(压缩+写入磁盘)?
我们不断编写大量的GZIP压缩数据.我正在寻找可替代GZIPOutputStream的替代品.