2

我是 C# 新手,并且在 Visual Studio 2005 中使用 C#.Net 2.0。

如何使用 GZipStream 从字符串创建 zip 文件。(我不想使用任何第三方库,并且纯粹使用 C# 来做这件事。)

仅供参考:场景是这样的。文件夹中已经有一个 zip 文件。我需要在 Base64 中编码这个 zip 文件流,然后再次压缩 Base 64 编码的字符串。(从 Base64 编码的原始 zip 文件创建一个新的 zip 文件)。

感谢你的帮助。

谢谢,

查图拉

4

2 回答 2

3

感谢布勒的回复。但不使用任何外部库我就可以做到。这是代码片段。这不是所有 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);
        }
    }
于 2011-05-05T05:33:35.197 回答
1

我假设您实际上是指使用 .zip 存档格式而不是其他格式,例如 .gz。.Net 2.0 压缩库不支持 zip 格式存档。GZipStream 等与 gzip 格式之间的压缩。这里有一篇文章展示了如何在没有外部库的情况下在 C# 中支持 zip,但我没有尝试或测试过它。您可以在周围找到类似的文章,但您必须挖掘才能找到纯 C# .NET 没有外部库的文章。 http://www.codeproject.com/KB/recipes/ZipStorer.aspx

于 2011-05-04T14:14:08.370 回答