1.C#代碼(需要調用SharpZipLib):
using System.IO;using System.Text;using ICSharpCode.SharpZipLib.Zip.Compression.Streams;namespace ConsoleApplicationDemo{ public class ZipHelper { /// <summary> /// 以Deflater方式壓縮字串,返回位元組數組 /// </summary> /// <param name="sString"></param> /// <returns></returns> public static byte[] ZipStr(string sString) { if (sString == null) return null; byte[] bytes = Encoding.UTF8.GetBytes(sString); return ZipByte(bytes); } /// <summary> /// 以Deflater方式壓縮位元組數組 /// </summary> /// <param name="bytes"></param> /// <returns></returns> public static byte[] ZipByte(byte[] bytes) { if (bytes == null) { return null; } MemoryStream ms = new MemoryStream(); using (DeflaterOutputStream zStream = new DeflaterOutputStream(ms)) { zStream.Write(bytes, 0, bytes.Length); zStream.Finish(); zStream.Close(); } byte[] result = ms.ToArray(); ms.Close(); return result; } /// <summary> /// 解壓位元組數組 /// </summary> /// <param name="bytes"></param> /// <returns></returns> public static byte[] UnZip(byte[] bytes) { if (bytes == null) { return null; } MemoryStream ms = new MemoryStream(); using (InflaterInputStream stream = new InflaterInputStream(ms)) { stream.Write(bytes, 0, bytes.Length); stream.Flush(); stream.Close(); } byte[] result = ms.ToArray(); ms.Close(); return result; } }}
2.Android代碼:
package com.google.test;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.zip.*;public class ZipHelper {private final static int CacheSize = 1024;/*** * 壓縮Zip * * @param data * @return */public static byte[] zipByte(byte[] data) {Deflater compresser = new Deflater();compresser.reset();compresser.setInput(data);compresser.finish();byte result[] = new byte[0];ByteArrayOutputStream o = new ByteArrayOutputStream(1);try {byte[] buf = new byte[CacheSize];int got = 0;while (!compresser.finished()) {got = compresser.deflate(buf);o.write(buf, 0, got);}result = o.toByteArray();} catch (Exception e) {e.printStackTrace();} finally {try {o.close();} catch (IOException e) {e.printStackTrace();}compresser.end();}return result;}/*** * 壓縮String * * @param data * @return */public static byte[] zipString(String data) {byte[] input = new byte[0];try {input = data.getBytes("UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();return null;}byte[] result = ZipHelper.zipByte(input);return result;}/*** * 解壓Zip * * @param data * @return */public static byte[] unZipByte(byte[] data) {Inflater decompresser = new Inflater();decompresser.setInput(data);byte result[] = new byte[0];ByteArrayOutputStream o = new ByteArrayOutputStream(1);try {byte[] buf = new byte[CacheSize];int got = 0;while (!decompresser.finished()) {got = decompresser.inflate(buf);o.write(buf, 0, got);}result = o.toByteArray();} catch (Exception e) {e.printStackTrace();} finally {try {o.close();} catch (IOException e) {e.printStackTrace();}decompresser.end();}return result;}/*** * 解壓Zip資料為String * * @param data * @return */public static String unZipByteToString(byte[] data) {byte[] result = unZipByte(data);String outputString = null;try {outputString = new String(result, 0, result.length, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return outputString;}}