2

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

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

4

1 回答 1

4

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

以下是创建 zip 文件的方法示例,您几乎可以在任何支持 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 方法针对内存中已有字节并且只想压缩它们并发送甚至不保存到磁盘的情况进行了优化。

于 2011-06-03T01:30:31.653 回答