0

圧縮された ByteArray をパラメーターとして受け取る C# 関数があります。この byteArray を抽出し、結果の非圧縮 byteArray を別の関数に送信する必要があります。以下の疑似コードzipBytesunzippedBytes参照してください:

Zlib.netを使ったソリューション!

byte[] receiveZipByte (byte[] zipBytes)

{

    MemoryStream oInStream = new MemoryStream(pZFileData);
    ZInputStream oZInstream = new ZInputStream(oInStream);
    MemoryStream oOutStream = new MemoryStream();

    byte[] buffer = new byte[2000];
    int len;
    while ((len = oZInstream.read(buffer, 0, 2000)) > 0)
    {
        oOutStream.Write(buffer, 0, len);
    }

    byte[] pFileData = oOutStream.ToArray();
    oZInstream.Close();
    oOutStream.Close();
   return unzippedBytes;
}
4

1 に答える 1

0

zlib を使用して圧縮されたデータを解凍する場合は、ZLib.NET ライブラリを使用することをお勧めします: http://www.componentace.com/zlib_.NET.htm

データで何をしたいかによって異なります。ただし、DotNetZip で Stream を使用する例を次に示します。

using (var input = new ZipInputStream(new MemoryStream(zipBytes)))
{
    ZipEntry e;
    while ((e = input.GetNextEntry()) != null)
    {
        if (e.IsDirectory) continue;
        using (var output = File.Open(e.FileName, FileMode.Create, FileAccess.ReadWrite))
        {
            while ((n = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                output.Write(buffer, 0, n);
            }
        }
    }
}

于 2013-08-16T20:50:40.457 に答える