Net圧縮機能の実現

1644 ワード

public static class Compressor    {

        

            public static byte[] Compress(byte[] data)

            {

                using (MemoryStream output = new MemoryStream())

                {

                    using (GZipStream gzip = new GZipStream(output, CompressionMode.Compress, true))

                    {

                        gzip.Write(data, 0, data.Length);

                        gzip.Close();

                        return output.ToArray();

                    }

                }

            }



            public static byte[] Decompress(byte[] data)

            {

                using (MemoryStream input = new MemoryStream())

                {

                    input.Write(data, 0, data.Length);

                    input.Position = 0;

                    using (GZipStream gzip = new GZipStream(input, CompressionMode.Decompress, true))

                    {

                        using (MemoryStream output = new MemoryStream())

                        {

                            byte[] buff = new byte[64];

                            int read = -1;

                            read = gzip.Read(buff, 0, buff.Length);

                            while (read > 0)

                            {

                                output.Write(buff, 0, read);

                                read = gzip.Read(buff, 0, buff.Length);

                            }

                            gzip.Close();

                            return output.ToArray();

                        }

                    }

                }

            }