gzipOutputStream = new GZIPOutputStream(); //查看了下API,write()接收的是byte[]类型的。 GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new ByteArrayOutputStream()); 而用GZIPOutputStream = new ByteArrayOutputStream(); GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream ); //GZIP对数据压缩,GZIP写入的数据是保存在byteArrayOutputStream上的 gzipOutputStream.write(ss.getBytes ()); //gzipOutputStream有缓冲,把缓冲清了,并顺便关闭流 gzipOutputStream.close(); 把压缩后的数据取出来,写给浏览器
image 再看看我上面给出示例中的 ByteArrayOutputStream 和 GZIPOutputStream 流,其实已经帮实现了 Closeable 接口,所以我们再使用的时候,我们借助 try-with-source 运行结果如下: 开始工作 自动释放 6、值得注意的地方 try ( GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new FileOutputStream (createdFile)); OutputStreamWriter osw = new OutputStreamWriter(gzipOutputStream); BufferedWriter 单独声明每个流就可以了,如下所示: try ( OutputStream out = new FileOutputStream(createdFile); GZIPOutputStream gzipOutputStream = new GZIPOutputStream(out); OutputStreamWriter osw = new OutputStreamWriter(gzipOutputStream
java.io.FileOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream gzos = new GZIPOutputStream(fos); byte[] buffer = new byte[1024]; int len; import java.nio.charset.StandardCharsets; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream gzip = new GZIPOutputStream(bos); gzip.write(input.getBytes()); gzip.flush(); out = new GZIPOutputStream(conn.getOutputStream()); byte[] reqContent = str.getBytes();
response.setCharacterEncoding(ENCODING_UTF8); response.setHeader("Content-Encoding", "gzip"); GZIPOutputStream mapper.setSerializationInclusion(Include.ALWAYS); jsonOut = mapper.writeValueAsString(outJB); out = new GZIPOutputStream java.net.HttpURLConnection; import java.net.URL; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream throws Exception { String resContent = null; HttpURLConnection conn = null; GZIPOutputStream method.equals(GET)) { out = new GZIPOutputStream(conn.getOutputStream());
; //找一个内存缓冲字节流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); //把数据压缩到缓冲字节流流中 GZIPOutputStream gout = new GZIPOutputStream(baos); //取出数据:压缩后的 byte b[] = data.getBytes();//原始字节 System.out.println 压缩代码写在此处 //找一个内存缓冲字节流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); //把数据压缩到缓冲字节流流中 GZIPOutputStream gout = new GZIPOutputStream(baos); //取出数据:压缩后的 byte b[] = gresponse.getOldBytes();//原始字节 System.out.println
Java中提供了ZipOutputStream和GZIPOutputStream类来完成文件压缩的任务。 ZipOutputStream类可以用于创建ZIP格式的压缩文件。 GZIPOutputStream类可以用于创建GZIP格式的压缩文件。 下面是一段Java代码,展示如何使用GZIPOutputStream类来创建一个名为“compressed.gz”压缩文件: import java.io.*; import java.util.zip gzipOS = new GZIPOutputStream(fos); int length; while ((length = fis.read(buffer)) > 0) 然后,我们使用GZIPOutputStream创建一个相应的压缩输出流。在while循环中,我们将从输入文件input.txt读取数据,并将其写入压缩输出流compressed.gz中。
null && acceptEncoding.contains("gzip")) { response.setHeader("Content-Encoding", "gzip"); GZIPOutputStream gzipOutputStream = new GZIPOutputStream(response.getOutputStream()); // 写入压缩后的数据... gzipOutputStream.close(); } else { // 普通未压缩响应 } 3.
public static byte[] converStringToByte(String str) { ByteArrayOutputStream byteOutput = null; GZIPOutputStream gzout = null; byte[] data = null; try { byteOutput = new ByteArrayOutputStream(); gzout = new GZIPOutputStream
gzipOutputStream = new GZIPOutputStream(); //查看了下API,write()接收的是byte[]类型的。 GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new ByteArrayOutputStream()); 而用GZIPOutputStream = new ByteArrayOutputStream(); GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream ); //GZIP对数据压缩,GZIP写入的数据是保存在byteArrayOutputStream上的 gzipOutputStream.write(ss.getBytes ()); //gzipOutputStream有缓冲,把缓冲清了,并顺便关闭流 gzipOutputStream.close(); 把压缩后的数据取出来,写给浏览器
out = new GZIPOutputStream(new FileOutputStream(new File("out.txt")))) { byte[] buffer = GZIPOutputStream实际上是FileOutputStream的装饰器。 我们再来看GZIPOutputStream类的close方法。 public void close() throws IOException { if (! FileOutputStream fout = new FileOutputStream(new File("out.txt")); GZIPOutputStream out = new GZIPOutputStream(fout)) { byte[] buffer = new byte[4096]; int read
java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream pureResult); ByteArrayOutputStream miwenOutput=new ByteArrayOutputStream(); GZIPOutputStream outStream = new GZIPOutputStream ( miwenOutput); byte[] buf = new byte
数据压缩,我们需要用到二个Java类,也就是java.util.zip 中的 类 GZIPOutputStream 此类为使用 GZIP 文件格式写入压缩数据实现流过滤器。 我们利用GZIPOutputStream(OutputStream out) 使用默认缓冲区大小创建新的输出流。 再用write(byte[] b)将 b.length 个字节写入此输出流。 压缩输出--把源数据压缩输出到baout内存流中 ByteArrayOutputStream baout = new ByteArrayOutputStream(); GZIPOutputStream gout = new GZIPOutputStream(baout); gout.write(str.getBytes("utf-8")); gout.close(); gout = new GZIPOutputStream(baout2); gout.write(bs);// 把数据压缩到baout中 gout.close();
java.net.URLDecoder; import java.net.URLEncoder; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream ByteArrayOutputStream out = new ByteArrayOutputStream(); // 使用默认缓冲区大小创建新的输出流 GZIPOutputStream gzip = new GZIPOutputStream(out); // 将 b.length 个字节写入此输出流 gzip.write(str.getBytes())
启用压缩: 即使使用了高效的序列化库,也可以在序列化之后对整个字节数组应用压缩算法,如DeflaterOutputStream(基于ZLIB)或GZIPOutputStream,这样在网络上传输之前进一步减小数据量 // 使用GZIP压缩 ByteArrayOutputStream baos = new ByteArrayOutputStream(); GZIPOutputStream gzipOut = new GZIPOutputStream(baos); ObjectOutputStream out = new ObjectOutputStream(gzipOut); UserInfo userInfo
java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream ByteArrayOutputStream out = new ByteArrayOutputStream(); // 使用默认缓冲区大小创建新的输出流 GZIPOutputStream gzip = new GZIPOutputStream(out); // 将 b.length 个字节写入此输出流 gzip.write(str.getBytes("UTF
使用标准的 GZIP 压缩方式,例如: // 客户端压缩示例(使用 Java GZIPOutputStream) public byte[] compressData(byte[] data) throws IOException { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try (GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) { gzipOutputStream.write(data
比如使用ZIP压缩发送和接收数据的例子:发送方:在Socket的OutputStream上封装GZIPOutputStream或DeflaterOutputStream1、发送数据2、发送数据结束标志( 此时需要关闭GZIPOutputStream或DeflaterOutputStream,否则不保证全部数据都被发送至对方)3、接收应答4、结束接收方:在Socket的InputStream上封装GZIPInputStream
在上述代码中,我们从FileInputStream中读取字节,并且写入到GZIPOutputStream中。GZIPOutputStream实际上是FileOutputStream的装饰器。 我们再来看GZIPOutputStream类的close方法: ? 我们可以看到,out变量实际上代表的是被装饰的FileOutputStream类。 在调用out变量的close方法之前,GZIPOutputStream还做了finish操作,该操作还会继续往FileOutputStream中写压缩信息,此时如果出现异常,则会out.close()方法被略过
以下是一个示例: // 获取输出流 ServletOutputStream out = response.getOutputStream(); // 创建GZIPOutputStream以压缩数据 GZIPOutputStream gzipOut = new GZIPOutputStream(out); // 将数据写入GZIPOutputStream gzipOut.write("This is a compressed response .".getBytes("UTF-8")); // 关闭GZIPOutputStream gzipOut.close(); // 设置响应头部,表示响应已被压缩 response.setHeader
s.Close(); } else { // 压缩 Stream s = new GZipOutputStream (File.Create(args[0] + “.gz”)); //生成一个GZipOutputStream流,用来生成压缩文件。 //因为GZipOutputStream由Stream派生,所以它可以赋给Stream。