2012-10-15 115 views

回答

4

这里的例子,请注意:
- ZipPackage似乎不压缩
- 生成的ZIP具有不希望文件 “[CONTENT_TYPES] .XML”
- System.IO.Compression因为.NET 4.5似乎是一个不错的替代

你,在Visual Studio中,增加提及 “WindowsBase”(不喜欢前缀 “System.IO。”)

using System; 
using System.Linq; 
using System.Text; 
using System.IO.Packaging; 
using System.IO; 

namespace TestZip 
{ 
public static class Program 
{ 
    public static void Main(string[] args) 
    { 
    byte[] data = Encoding.UTF8.GetBytes(String.Join("\n", new string[1000].Select(s => "Something to zip.").ToArray())); 
    byte[] zippedBytes; 
    using(MemoryStream zipStream = new MemoryStream()) 
    { 
    using (Package package = Package.Open(zipStream, FileMode.Create)) 
    { 
    PackagePart document = package.CreatePart(new Uri("/test.txt", UriKind.Relative), ""); 
    using (MemoryStream dataStream = new MemoryStream(data)) 
    { 
     document.GetStream().WriteAll(dataStream); 
    }  
    }  
    zippedBytes = zipStream.ToArray(); 
    } 
    File.WriteAllBytes("test.zip", zippedBytes); 
    } 

    private static void WriteAll(this Stream target, Stream source) 
    { 
    const int bufSize = 0x1000; 
    byte[] buf = new byte[bufSize]; 
    int bytesRead = 0; 
    while ((bytesRead = source.Read(buf, 0, bufSize)) > 0) 
    target.Write(buf, 0, bytesRead); 
    } 
} 
} 
相关问题