.NET和Android解压缩处理
生活随笔
收集整理的這篇文章主要介紹了
.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;}
}
轉載于:https://www.cnblogs.com/ahui/archive/2011/04/21/2023847.html
總結
以上是生活随笔為你收集整理的.NET和Android解压缩处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Asp.net Ajax AutoCom
- 下一篇: C#时间格式转换、日期操作函数、常用转换