工作需求,整理:
ZipHelper.cs
1 /// <summary> 2 /// Compression & decompression for a single file. 3 /// </summary> 4 public static class ZipHelper 5 { 6 /// <summary> 7 /// Compress a single file to a zipFile. 8 /// </summary> 9 /// <param name="srcFileName">the name of the specified source file</param>10 /// <param name="srcFilePath">the path of the specified source file</param>11 /// <param name="zipFilePath">the path of the specified zip file</param>12 public static void Compressing(string srcFileName,string srcFilePath, string zipFilePath)13 {14 var zipStream = FileHelper.OpenFile(zipFilePath).Result.OpenStreamForWriteAsync().Result;15 var srcFile = FileHelper.OpenFile(srcFilePath).Result;16 var streams = srcFile.OpenStreamForReadAsync().Result;17 var buffers =new byte[streams.Length];18 streams.Read(buffers, 0, buffers.Length);19 using (zipStream)20 {21 using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create))22 {23 var entry = zipArchive.CreateEntry(srcFileName);24 using (var stream=entry.Open())25 {26 var bytes = buffers;27 stream.Write(bytes,0,bytes.Length);28 }29 } 30 }31 }32 33 34 /// <summary>35 /// 解壓單個檔案36 /// </summary>37 /// <param name="zipFilePath">壓縮檔路徑</param>38 /// <param name="desFilePath">存放檔案路徑</param>39 public static void Decompressing(string zipFilePath,string desFilePath)40 {41 var zipStream = FileHelper.OpenFileStream(zipFilePath, FileAccessMode.ReadWrite).Result.AsStream();42 var desFileStream = FileHelper.OpenFileStream(desFilePath, FileAccessMode.ReadWrite).Result.AsStream();43 using (var zipArchive=new ZipArchive(zipStream,ZipArchiveMode.Read))44 {45 ZipArchiveEntry entry = zipArchive.Entries[0];46 using (var stream=entry.Open())47 {48 while (stream.ReadByte()!=-1)49 {50 desFileStream.WriteByte((byte)stream.ReadByte());51 }52 }53 }54 desFileStream.Dispose();55 }56 }
View Code
方法內部適當調整,可用於Windows Phone.