我是C#的新手,并在Visual Studio 2005中使用C#.Net 2.0。
如何使用GZipStream从字符串创建zip文件。 (我不想使用任何第三方库,纯粹使用C#。)
仅供参考:情景就是这样。文件夹中已有一个zip文件。我需要在Base64中对此zip文件流进行编码,然后再压缩Base 64编码的字符串。 (从Base64编码的原始zip文件创建新的zip文件)。
感谢您的帮助。
谢谢,
Chatura
答案 0 :(得分:1)
我假设您实际上是指使用.zip存档格式而不是其他格式,例如.gz。 .Net 2.0压缩库不支持zip格式存档。 GZipStream和gzip等格式的压缩。这里有一篇文章展示了如何在没有外部库的情况下在C#中支持zip,但我还没有尝试或测试它。你可以找到类似的文章,但你必须挖掘找到纯C#.NET没有外部库文章。 http://www.codeproject.com/KB/recipes/ZipStorer.aspx
答案 1 :(得分:1)
感谢Bueller的回复。但是,如果不使用任何外部库,我就可以做到。这是代码片段。这不是所有try / catch等的最终代码。可能对其他人有用。
private static void CreateZipFromText(string text)
{
byte[] byteArray = ASCIIEncoding.ASCII.GetBytes(text);
string encodedText = Convert.ToBase64String(byteArray);
FileStream destFile = File.Create("C:\\temp\\testCreated.zip");
byte[] buffer = Encoding.UTF8.GetBytes(encodedText);
MemoryStream memoryStream = new MemoryStream();
using (System.IO.Compression.GZipStream gZipStream = new System.IO.Compression.GZipStream(destFile, System.IO.Compression.CompressionMode.Compress, true))
{
gZipStream.Write(buffer, 0, buffer.Length);
}
}