使用SharpCompress或Sytem.IO.Compression或者在Windows Phone 8中压缩本地StorageFolder

时间:2014-02-06 00:09:45

标签: windows-phone-8 zip c#-5.0 sharpcompress

我正在使用Windows phone 8商店应用,需要Zip一个本地存储文件夹(带有一些图像)。环境VS 2013。 我了解到我可以添加SharpCompress& amp; System.IO.Compression(但不是.FileSystem)。

SharpZipLib& DotNetZip似乎不支持WP8。

SharpCompress提供的示例不起作用。

对代码的任何建议都会有很大帮助。感谢。

1 个答案:

答案 0 :(得分:0)

System.IO.Compression:

string GuidPath = Path.Combine(LocalStorage, Guid.NewGuid().ToString()) + ".zip";
                        using (FileStream zipToOpen = new FileStream(GuidPath, FileMode.Create))
                        {
                            using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create))
                            {
                                String[] files = Directory.GetFiles(szFldrPath);
                                foreach( String echFile in files )
                                {
                                    ZipArchiveEntry readmeEntry = archive.CreateEntry(Path.GetFileName(echFile));
                                    using (BinaryWriter writer = new BinaryWriter(readmeEntry.Open()))
                                    {
                                        using (Stream source = File.OpenRead(echFile))
                                        {
                                            byte[] buffer = new byte[4096];
                                            int bytesRead;
                                            while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
                                            {
                                                writer.Write(buffer, 0, bytesRead);
                                            }
                                        }
                                    }
                                }
                            }
                        }