
Silverlight除了从资源文件加载文件进行UnZip之外,并不支持开放的Zip和UnZip *** 作。如果需要进行Zip和UnZip *** 作需要使用第三方库SharpZiplib,其提供了sl的版本,目前支持sl 3.0及其以上的sl。可参见:http://slsharpziplib.codeplex.com/releases/view/50561,以下是pmias中用到的一段代码,贴此以作备用。没有zip *** 作,只有unzip,参数中的zipStream来自httpWebResponse response的response.GetResponseStream(),应用形式为直接解压通过httpResponse返回的Stream,然后保存为文件。如果需要unzip文件可自行修改或查阅SharpZiplib的相关 *** 作,在传参时传入zip文件的Stream即可。
using System; using System.Net; using System.windows; using System.windows.Controls; using System.windows.documents; using System.windows.Ink; using System.windows.input; using System.windows.Media; using System.windows.Media.Animation; using System.windows.Shapes; using System.IO; using ICSharpCode.SharpZiplib.Zip; using System.Text; namespace Navi { /* * 钟磊 20111107 * * silverlight 中的 zip *** 作 * 其中用到第三方库:SharpZiplib.Silverlight 0.86.0.518,支持silverlight 3以上版本 * 使用时引用库文件 SharpZiplib.Silverlight3.dll * http://slsharpziplib.codeplex.com/releases/vIEw/50561 * * 注:所有传入的Stream都不在此类中关闭 * 关闭权留给调用者 */ public class ZipUtil { //将zip过的stream解压后写入文件 public static voID ZipStream2file(Stream saveStream,Stream zipStream) { ZipinputStream unZipStream = new ZipinputStream(zipStream); //默认只有一个Entry ZipEntry theEntry = unZipStream.GetNextEntry(); int size = 1024; byte[] newbyte = new byte[size]; while (true) { size = unZipStream.Read(newbyte,newbyte.Length); if (size > 0) { saveStream.Write(newbyte,size); } else { break; } } //saveStream.Close(); unZipStream.Close(); //zipStream.Close(); } //将Stream直接写入文件 public static voID Stream2file(Stream saveStream,Stream responseStream) { int size = 1024; byte[] newbyte = new byte[size]; while (true) { size = responseStream.Read(newbyte,newbyte.Length); if (size > 0) { //写入数据 saveStream.Write(newbyte,size); } else { break; } } //responseStream.Close(); //saveStream.Close(); } //从一个zip格式的stream中unzip出字符串 public static string ZipStream2String(Stream zipStream) { ZipinputStream unZipStream = new ZipinputStream(zipStream); //打开zip文档中的一个Entry,此句必须要有 ZipEntry theEntry = unZipStream.GetNextEntry(); int size = 1024; byte[] newbyte = new byte[size]; StringBuilder sb = new StringBuilder(); String strTmp; while (true) { size = unZipStream.Read(newbyte,newbyte.Length); if (size > 0) { strTmp = EnCoding.UTF8.GetString(newbyte,size); sb.Append(strTmp); } else { break; } } unZipStream.Close(); //zipStream.Close(); return sb.ToString(); } //从Stream中读取字符串 public static string Stream2String(Stream responseStream) { StreamReader readStream = new StreamReader(responseStream,EnCoding.UTF8); string result = readStream.ReadToEnd(); readStream.Close(); //responseStream.Close(); return result; } } }
总结以上是内存溢出为你收集整理的Silverlight 中使用 zip全部内容,希望文章能够帮你解决Silverlight 中使用 zip所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)