从流中提取zip到流

时间:2015-03-30 14:05:01

标签: c# zip

我有SqlDatabase。在数据库的一列中,我有二进制数据,我检查过,这是zip文件。我用实体框架将这个文件下载到byte []。在这个zip文件中,我总是有一个单独的xml文件。现在我想从byte []到byte []或string中提取这个xml文件。接下来我想从string,byte []读取这个xml并读取一个值。我不知道如何从byte []提取zip文件到byte [] / string。

祝你好运

1 个答案:

答案 0 :(得分:1)

在System.IO.Compression中,您将找到所有必需的类。

首先使用如下方法解压缩:

static byte[] Decompress(byte[] data)
{
    using (var compressedStream = new MemoryStream(data))
    using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
    using (var resultStream = new MemoryStream())
    {
        zipStream.CopyTo(resultStream);
        return resultStream.ToArray();
    }
}

然后,您可以在字符串中转换此字节数组,因为您有一个xml文件。 您可以使用以下代码来实现此目的:

var str = System.Text.Encoding.Default.GetString(Decompress(byteArray));

您也可以提取文件,然后将其读入字符串。

希望它有所帮助。