.NET和Android解压缩处理

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;

	}

}

 

你可能感兴趣的:(android)