我有一个场景,我希望使用SharpZipLib压缩电子邮件附件。然后最终用户将打开附件并解压缩附件。
使用SharpZipLib最初压缩文件的文件是否会被我的最终用户的其他程序轻松解压缩?
答案 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方法针对内存中已有字节的情况进行了优化,您只想压缩它们并在不保存到磁盘的情况下发送。