java压缩和解压字符串,Byte数组,String

在网上找到的压缩解压的工具类,可以压缩String字符串

/***
  * 压缩GZip
  *
  * @param data
  * @return
  */
 public static byte[] gZip(byte[] data) {
  byte[] b = null;
  try {
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   GZIPOutputStream gzip = new GZIPOutputStream(bos);
   gzip.write(data);
   gzip.finish();
   gzip.close();
   b = bos.toByteArray();
   bos.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return b;
 }

/***
  * 解压GZip
  *
  * @param data
  * @return
  */
 public static byte[] unGZip(byte[] data) {
  byte[] b = null;
  try {
   ByteArrayInputStream bis = new ByteArrayInputStream(data);
   GZIPInputStream gzip = new GZIPInputStream(bis);
   byte[] buf = new byte[1024];
   int num = -1;
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   while ((num = gzip.read(buf, 0, buf.length)) != -1) {
    baos.write(buf, 0, num);
   }
   b = baos.toByteArray();
   baos.flush();
   baos.close();
   gzip.close();
   bis.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return b;
 }

/***
  * 压缩Zip
  *
  * @param data
  * @return
  */
 public static byte[] zip(byte[] data) {
  byte[] b = null;
  try {
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   ZipOutputStream zip = new ZipOutputStream(bos);
   ZipEntry entry = new ZipEntry("zip");
   entry.setSize(data.length);
   zip.putNextEntry(entry);
   zip.write(data);
   zip.closeEntry();
   zip.close();
   b = bos.toByteArray();
   bos.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return b;
 }

/***
  * 解压Zip
  *
  * @param data
  * @return
  */
 public static byte[] unZip(byte[] data) {
  byte[] b = null;
  try {
   ByteArrayInputStream bis = new ByteArrayInputStream(data);
   ZipInputStream zip = new ZipInputStream(bis);
   while (zip.getNextEntry() != null) {
    byte[] buf = new byte[1024];
    int num = -1;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    while ((num = zip.read(buf, 0, buf.length)) != -1) {
     baos.write(buf, 0, num);
    }
    b = baos.toByteArray();
    baos.flush();
    baos.close();
   }
   zip.close();
   bis.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return b;
 }

/***
  * 压缩BZip2
  *
  * @param data
  * @return
  */
 public static byte[] bZip2(byte[] data) {
  byte[] b = null;
  try {
   ByteArrayOutputStream bos = new ByteArrayOutputStream();
   CBZip2OutputStream bzip2 = new CBZip2OutputStream(bos);
   bzip2.write(data);
   bzip2.flush();
   bzip2.close();
   b = bos.toByteArray();
   bos.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return b;
 }

 /***
  * 解压BZip2
  *
  * @param data
  * @return
  */
 public static byte[] unBZip2(byte[] data) {
  byte[] b = null;
  try {
   ByteArrayInputStream bis = new ByteArrayInputStream(data);
   CBZip2InputStream bzip2 = new CBZip2InputStream(bis);
   byte[] buf = new byte[1024];
   int num = -1;
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   while ((num = bzip2.read(buf, 0, buf.length)) != -1) {
    baos.write(buf, 0, num);
   }
   b = baos.toByteArray();
   baos.flush();
   baos.close();
   bzip2.close();
   bis.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  return b;
 }

/**
  * 把字节数组转换成16进制字符串
  *
  * @param bArray
  * @return
  */
 public static String bytesToHexString(byte[] bArray) {
  StringBuffer sb = new StringBuffer(bArray.length);
  String sTemp;
  for (int i = 0; i < bArray.length; i++) {
   sTemp = Integer.toHexString(0xFF & bArray[i]);
   if (sTemp.length() < 2)
    sb.append(0);
   sb.append(sTemp.toUpperCase());
  }
  return sb.toString();
 }

/**
  *jzlib 压缩数据
  *
  * @param object
  * @return
  * @throws IOException
  */
 public static byte[] jzlib(byte[] object) {
  byte[] data = null;
  try {
   ByteArrayOutputStream out = new ByteArrayOutputStream();
   ZOutputStream zOut = new ZOutputStream(out,
     JZlib.Z_DEFAULT_COMPRESSION);
   DataOutputStream objOut = new DataOutputStream(zOut);
   objOut.write(object);
   objOut.flush();
   zOut.close();
   data = out.toByteArray();
   out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return data;
 }
 /**
  *jzLib压缩的数据
  *
  * @param object
  * @return
  * @throws IOException
  */
 public static byte[] unjzlib(byte[] object) {
  byte[] data = null;
  try {
   ByteArrayInputStream in = new ByteArrayInputStream(object);
   ZInputStream zIn = new ZInputStream(in);
   byte[] buf = new byte[1024];
   int num = -1;
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   while ((num = zIn.read(buf, 0, buf.length)) != -1) {
    baos.write(buf, 0, num);
   }
   data = baos.toByteArray();
   baos.flush();
   baos.close();
   zIn.close();
   in.close();

  } catch (IOException e) {
   e.printStackTrace();
  }
  return data;
 }
 public static void main(String[] args) {
  String s = "this is a test";

  byte[] b1 = zip(s.getBytes());
  System.out.println("zip:" + bytesToHexString(b1));
  byte[] b2 = unZip(b1);
  System.out.println("unZip:" + new String(b2));
  byte[] b3 = bZip2(s.getBytes());
  System.out.println("bZip2:" + bytesToHexString(b3));
  byte[] b4 = unBZip2(b3);
  System.out.println("unBZip2:" + new String(b4));
  byte[] b5 = gZip(s.getBytes());
  System.out.println("bZip2:" + bytesToHexString(b5));
  byte[] b6 = unGZip(b5);
  System.out.println("unBZip2:" + new String(b6));
  byte[] b7 = jzlib(s.getBytes());
  System.out.println("jzlib:" + bytesToHexString(b7));
  byte[] b8 = unjzlib(b7);
  System.out.println("unjzlib:" + new String(b8));
 }
}
时间: 2025-01-16 09:25:01

java压缩和解压字符串,Byte数组,String的相关文章

java 压缩和解压zip包

网上有关压缩和解压zip包的博文一大堆,我随便找了一个,看了看,按照自己的需要修改了一下,与各位分享一下,希望各位大神指正: package com.wangpeng.utill; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import

【转】Java压缩和解压文件工具类ZipUtil

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/ 1 package com.utility.zip; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import jav

Java 压缩解压字符串(支持中文)

public static void main(String[] args) throws Exception{ String str ="xflush3.0个人感觉最大的特点就是监控配置非常灵活,从日志的格式定义.收集.配置,都可以自定义:这样对于老应用的打点日志,不需要关心规则的定义就可以平滑的接入该平台. 本篇幅以AE detail的应用为例,介绍一部分业务监控规则的配置方式以及遇到的一些坑."; System.out.println("\n原始的字符串为-------

.net文件压缩和解压及中文文件夹名称乱码问题

/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博客内容 在.NET可以通过多种方式实现zip的压缩和解压:1.使用System.IO.Packaging:2.使用第三方类库:3.通过 System.IO.Compression 命名空间中新增的ZipArchive.ZipFile等类实现. 一.使用System.IO.Packaging压缩和解压

java zip压缩和解压(支持中文)

package com.xeon.mis.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Enumeration; impor

对数据进行GZIP压缩和解压

public class GzipUtils { /** * 对字符串进行gzip压缩 * @param data * @return * @throws IOException */ public static String compress(String data) throws IOException { if (null == data || data.length() <= 0) { return data; } //创建一个新的byte数组输出流 ByteArrayOutputStr

C#对文件操作(基本的读写以及压缩和解压)

主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream.FileInfo.StreamWrite.StreamRead.GZipStream. 字符数组和字节数组的转换: 1 byte[] bytedata = new byte[200]; 2 char[] chardata = new char[200]; 3 try 4 { 5 FileStream fs = new FileStream("App.config", FileMode.Open); 6 f

C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)

我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib.dll 支持库 第二步:创建一个压缩和解压的demo项目 第三步:查看压缩和解压的文件的结果 二.demo演示(包括源码和界面) 1.下载文件压缩和解压的支持库dll ,下载地址:http://pan.baidu.com/s/1pLausnL 2.创建window创建项目 1) 添加引用(文件压缩

c#自带类实现的多文件压缩和解压

c#自带的System.IO.Compression命名空间下的压缩类实现的多文件压缩和解压功能,缺点是多文件压缩包的解压只能调用自身的解压方法,和现有的压缩软件不兼容.下面的代码没有把多文件的目录结构加进去 using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; namespace Test.Zip { class CompressHelper { /// <su