Metro style app 解压缩

简介:

 这个例子,是一个完整的Metro解压缩ZIP文件的例子,首先选择要解压缩的Zip文件,然后自选保存目录。

private  async void  UnZipFile( object  sender, RoutedEventArgs e)
{
     FileOpenPicker fop = new  FileOpenPicker();
     fop.FileTypeFilter.Add( ".zip" );
     fop.SuggestedStartLocation = PickerLocationId.Desktop;
     fop.ViewMode = PickerViewMode.List;
     var  zipfile = await fop.PickSingleFileAsync();
     byte [] buffer = WindowsRuntimeBufferExtensions.ToArray(await Windows.Storage.FileIO.ReadBufferAsync(zipfile));
     using  (MemoryStream stream = new  MemoryStream(buffer))
     {
         ZipArchive zipArchive = new  ZipArchive(stream, ZipArchiveMode.Read);
         FolderPicker fp = new  FolderPicker();
         //Add file types to the FolderPicker
         foreach  ( var  zipArchiveEntry in  zipArchive.Entries)
         {
             if  (!zipArchiveEntry.FullName.EndsWith( "/" ))
             {
                 string  fileExtension = "."  + Regex.Match(zipArchiveEntry.FullName, @"[^\.]\w+$" ).Value;
                 if  (!fp.FileTypeFilter.Contains(fileExtension))
                     fp.FileTypeFilter.Add(fileExtension);
             }
         }
         fp.SuggestedStartLocation = PickerLocationId.Desktop;
         fp.ViewMode = PickerViewMode.List;
         StorageFolder unzipfolder = await fp.PickSingleFolderAsync();
         int  progress = 0;
         foreach  ( var  zipArchiveEntry in  zipArchive.Entries)
         {
             if  (!String.IsNullOrEmpty(zipArchiveEntry.FullName))
             {
                 if  (!zipArchiveEntry.FullName.EndsWith( "/" ))
                 {
                     string  fileName = zipArchiveEntry.FullName.Replace( "/" , "\\" );
                     using  (Stream fileData = zipArchiveEntry.Open())
                     {
                         StorageFile newFile = await unzipfolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
                         using  (IRandomAccessStream newFileStream = await newFile.OpenAsync(FileAccessMode.ReadWrite))
                         {
                             using  (Stream s = newFileStream.AsStreamForWrite())
                             {
                                 await fileData.CopyToAsync(s);
                                 await s.FlushAsync();
                             }
                         }
                     }
                 }
             }
             progress++;
             progressBar.Value = progress * 100 / zipArchive.Entries.Count;
         }
     }
}

Source Address

 


本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/11/21/2781036.html,如需转载请自行联系原作者

目录
相关文章
uni-app解决跳转页面引起的页面压缩变形
uni-app解决跳转页面引起的页面压缩变形
|
iOS开发
iOS App廋身体积压缩之字体图标使用
iOS App廋身体积压缩之字体图标使用
iOS App廋身体积压缩之字体图标使用
|
JavaScript
Uni-App - Class 与 Style 绑定
Uni-App - Class 与 Style 绑定
379 0
|
Web App开发
<span style="font-weight:normal;">其他请<a href="http://blog.csdn.net/odailidong/article/details/72943877">参考: App统计指标定义</a></span>
(一)流量统计   1. 独立用户数:在当前计算周期内,访问统计对象的不重复用户数。万瑞数据系统通过对用户所使用的浏览器赋予唯一标识来识别用户的身份。
852 0
|
Java Android开发
支付宝 App 构建优化解析:Android 包大小极致压缩
本章节我们将围绕《支付宝 App 构建优化解析》另启新系列,细分拆解客户端在“代码管理”、“证书管理”、“版本管理”、“构建打包”等维度的具体实现方案展开讨论,带领大家进一步了解支付宝在 App 构建模块下的持续优化。
2501 0

热门文章

最新文章