sharpziplib压缩文件在外部解压缩

时间:2011-06-03 01:17:41

标签: c# .net asp.net compression sharpziplib

我有一个场景,我希望使用SharpZipLib压缩电子邮件附件。然后最终用户将打开附件并解压缩附件。

使用SharpZipLib最初压缩文件的文件是否会被我的最终用户的其他程序轻松解压缩?

1 个答案:

答案 0 :(得分:4)

这取决于您使用SharpZipLib的方式。使用此库压缩数据的方法不止一种。

以下是创建zip文件的方法示例,您可以在任何拉链识别应用程序中打开该文件:

private static byte[] CreateZip(byte[] fileBytes, string fileName)
{
    using (var memoryStream = new MemoryStream())
    using (var zipStream = new ZipOutputStream(memoryStream))
    {
        var crc = new Crc32();
        crc.Reset();
        crc.Update(fileBytes);

        var zipEntry =
            new ZipEntry(fileName)
            {
                Crc = crc.Value,
                DateTime = DateTime.Now,
                Size = fileBytes.Length
            };
        zipStream.PutNextEntry(zipEntry);
        zipStream.Write(fileBytes, 0, fileBytes.Length);
        zipStream.Finish();
        zipStream.Close();
        return memoryStream.ToArray();
    }
}

用法:

var fileBytes = File.ReadAllBytes(@"C:/1.xml");

var zipBytes = CreateZip(fileBytes, "MyFile.xml");

File.WriteAllBytes(@"C:/2.zip", zipBytes);

此CreateZip方法针对内存中已有字节的情况进行了优化,您只想压缩它们并在不保存到磁盘的情况下发送。