Exemple #1
1
        static void Main(string[] args)
        {
            //压缩分为三种:1.字节数组 2.对文件的压缩 3.对字符串的压缩
            //下面掩饰的是加解密字节数组

            byte[] cbytes = null;
            //压缩
            using (MemoryStream cms = new MemoryStream())
            {
                using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms, System.IO.Compression.CompressionMode.Compress))
                {
                    //将数据写入基础流,同时会被压缩
                    byte[] bytes = Encoding.UTF8.GetBytes("解压缩测试");
                    gzip.Write(bytes, 0, bytes.Length);
                }
                cbytes = cms.ToArray();
            }
            //解压
            using (MemoryStream dms = new MemoryStream())
            {
                using (MemoryStream cms = new MemoryStream(cbytes))
                {
                    using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms, System.IO.Compression.CompressionMode.Decompress))
                    {
                        byte[] bytes = new byte[1024];
                        int len = 0;
                        //读取压缩流,同时会被解压
                        while ((len = gzip.Read(bytes, 0, bytes.Length)) > 0)
                        {
                            dms.Write(bytes, 0, len);
                        }
                    }
                }
                Console.WriteLine(Encoding.UTF8.GetString(dms.ToArray()));      //result:"解压缩测试"
            }

            //————————————————————————————————————————————
            //下面示例来自:http://www.cnblogs.com/yank/p/Compress.html

            TestGZipCompressFile();

            string str = "abssssdddssssssssss11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
            string orgStr = str;
            string result = "";

            //将传入的字符串直接进行压缩,解压缩,会出现乱码。
            //先转码,然后再压缩。解压缩:先解压缩,再反转码
            Console.WriteLine("源字符串为:{0}", str);
            result = GZipCompress.Compress(str);
            Console.WriteLine("压缩后为:{0}", result);

            Console.Write("压缩前:{0},压缩后:{1}", str.Length, result.Length);

            Console.WriteLine("开始解压...");
            Console.WriteLine("解压后:{0}", result);
            result = GZipCompress.Decompress(result);
            Console.WriteLine("解压后与源字符串对比,是否相等:{0}", result == orgStr);

            Console.WriteLine("源字符串为:{0}", str);
            result = ZipComporessor.Compress(str);
            Console.WriteLine("压缩后为:{0}", result);

            Console.Write("压缩前:{0},压缩后:{1}", str.Length, result.Length);

            Console.WriteLine("开始解压...");
            Console.WriteLine("解压后:{0}", result);
            result = ZipComporessor.Decompress(result);
            Console.WriteLine("解压后与源字符串对比,是否相等:{0}", result == orgStr);

            Console.WriteLine("输入任意键,退出!");
            Console.ReadKey();
        }
Exemple #2
0
        /// <summary>
        /// In Memory GZip Decompressor 
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static byte[] GZip_Decompress(this byte[] data)
        {
            int length = 100000; //10Kb
            byte[] Ob = new byte[length];
            byte[] result = null;

            using (var ms = new MemoryStream(data))
            {
                using (var gz = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
                {
                    int a = 0;
                    while ((a = gz.Read(Ob, 0, length)) > 0)
                    {
                        if (a == length)
                            result = result.Concat(Ob);
                        else
                            result = result.Concat(Ob.Substring(0, a));
                    }
                    gz.Close();
                }
                ms.Close();
            }

            return result;
        }
Exemple #3
0
 public static byte[] Decompress(byte[] data)
 {
     try
     {
         MemoryStream ms = new MemoryStream(data);
         System.IO.Compression.GZipStream zip = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress, true);
         MemoryStream msreader = new MemoryStream();
         byte[] buffer = new byte[0x1000];
         while (true)
         {
             int reader = zip.Read(buffer, 0, buffer.Length);
             if (reader <= 0)
             {
                 break;
             }
             msreader.Write(buffer, 0, reader);
         }
         zip.Close();
         ms.Close();
         msreader.Position = 0;
         buffer = msreader.ToArray();
         msreader.Close();
         return buffer;
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
        public static string UnZip(string value)
        {
            //Transform string into byte[]
            byte[] byteArray = new byte[value.Length];
            int indexBA = 0;
            foreach (char item in value.ToCharArray())
            {
                byteArray[indexBA++] = (byte)item;
            }

            //Prepare for decompress
            System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
            System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms,
                System.IO.Compression.CompressionMode.Decompress);

            //Reset variable to collect uncompressed result
            byteArray = new byte[byteArray.Length];

            //Decompress
            int rByte = sr.Read(byteArray, 0, byteArray.Length);

            //Transform byte[] unzip data to string
            System.Text.StringBuilder sB = new System.Text.StringBuilder(rByte);
            //Read the number of bytes GZipStream red and do not a for each bytes in
            //resultByteArray;
            for (int i = 0; i < rByte; i++)
            {
                sB.Append((char)byteArray[i]);
            }
            sr.Close();
            ms.Close();
            sr.Dispose();
            ms.Dispose();
            return sB.ToString();
        }
Exemple #5
0
        /// <summary>
        /// �����ѹ���������л�
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static object Decompress(byte[] buffer, Type type)
        {
            System.IO.MemoryStream ms3 = new System.IO.MemoryStream();
            System.IO.MemoryStream ms2 = new System.IO.MemoryStream(buffer);
            System.IO.Compression.GZipStream gs = new System.IO.Compression.GZipStream(ms2, System.IO.Compression.CompressionMode.Decompress);

            byte[] writeData = new byte[4096];

            while (true)
            {
                int size = gs.Read(writeData, 0, writeData.Length);
                if (size > 0)
                {
                    ms3.Write(writeData, 0, size);
                }
                else
                {
                    break;
                }
            }

            gs.Close();
            ms3.Flush();
            byte[] DecompressBuf = ms3.ToArray();

            #region deserialize
            CompressionSerialize compressionSerialize = new CompressionSerialize();
            return compressionSerialize.Deserialize(DecompressBuf);

            #endregion
        }
Exemple #6
0
        public byte[] uncompress(byte[] data)
        {
            MemoryStream packed = new MemoryStream(data);

            System.IO.Stream unpacker = new System.IO.Compression.GZipStream(
                packed,
                System.IO.Compression.CompressionMode.Decompress
            );

            MemoryStream unpacked = new MemoryStream();

            byte[] chunk = new byte[10240];

            int n = unpacker.Read(chunk, 0, chunk.Length);
            while (n > 0)
            {
                unpacked.Write(chunk, 0, n);
                n = unpacker.Read(chunk, 0, chunk.Length);
            }

            return unpacked.ToArray();
        }
Exemple #7
0
        static void Main(string[] args)
        {
            System.IO.Stream unpacker = new System.IO.Compression.GZipStream(
                System.Console.OpenStandardInput(),
                System.IO.Compression.CompressionMode.Decompress
            );

            System.IO.Stream stdout = System.Console.OpenStandardOutput();

            byte[] chunk = new byte[10240];

            try
            {
                int n = unpacker.Read(chunk, 0, chunk.Length);
                while (n > 0)
                {
                    stdout.Write(chunk, 0, n);
                    n = unpacker.Read(chunk, 0, chunk.Length);
                }
            } catch (System.IO.InvalidDataException e)
            {
            }
        }
Exemple #8
0
        ///// <summary>
        ///// In Memory GZip Decompressor
        ///// </summary>
        ///// <param name="data"></param>
        ///// <returns></returns>
        //public static byte[] GZip_Decompress(this byte[] data)
        //{
        //    int length = 100000;
        //    byte[] Ob = new byte[length];
        //    byte[] result = null;

        //    using (var ms = new MemoryStream(data))
        //    {
        //        using (var gz = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
        //        {
        //            int a = 0;
        //            while ((a = gz.Read(Ob, 0, length)) > 0)
        //            {
        //                if (a == length)
        //                    result = result.Concat(Ob);
        //                else
        //                    result = result.Concat(Ob.Substring(0, a));
        //            }
        //            gz.Close();
        //        }
        //        ms.Close();
        //    }

        //    return result;
        //}

        ///// <summary>
        ///// In Memory GZip Decompressor
        ///// </summary>
        ///// <param name="data"></param>
        ///// <returns></returns>
        //public static byte[] GZip_Decompress1(this byte[] data)
        //{
        //    byte[] result = null;

        //    using (var os = new MemoryStream())
        //    {
        //        using (var ms = new MemoryStream(data))
        //        {
        //            using (var gz = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
        //            {
        //                gz.CopyTo(os);
        //                gz.Close();
        //            }
        //            ms.Close();
        //        }
        //        result = os.ToArray();
        //        os.Close();
        //    }


        //    return result;
        //}


        /// <summary>
        /// In Memory GZip Decompressor. Fastest implementation at the moment
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static byte[] GZip_Decompress(this byte[] data)
        {
            int length = 100000;

            byte[]        Ob     = new byte[length];
            byte[]        result = null;
            List <byte[]> fl     = new List <byte[]>();
            long          fLen   = 0;

            using (var ms = new MemoryStream(data))
            {
                using (var gz = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
                {
                    int a = 0;
                    while ((a = gz.Read(Ob, 0, length)) > 0)
                    {
                        if (a == length)
                        {
                            fl.Add(Ob);
                        }
                        else
                        {
                            fl.Add(Ob.Substring(0, a));
                        }

                        fLen += a;
                        Ob    = new byte[length];
                    }
                    gz.Close();
                }
                ms.Close();

                if (fLen > 0)
                {
                    result = new byte[fLen];
                    int offset = 0;
                    foreach (var el in fl)
                    {
                        Buffer.BlockCopy(el, 0, result, offset, el.Length);
                        offset += el.Length;
                    }
                }
            }

            return(result);
        }
        //identify why passing stream instead of bytes returns empty result
        public static byte[] DecompressGzip(byte[] gzip)
        {
            using (var decompressor = new System.IO.Compression.GZipStream(new MemoryStream(gzip), System.IO.Compression.CompressionMode.Decompress))
            {
                var buffer = new byte[BufferSize];

                using (var output = new MemoryStream())
                {
                    int read;
                    while ((read = decompressor.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        output.Write(buffer, 0, read);
                    }
                    return output.ToArray();
                }
            }
        }
Exemple #10
0
        private static string DecompressBytes(byte[] compressedBytes)
        {
            string uncompressedObj = string.Empty;

            using (System.IO.Compression.GZipStream stream = new System.IO.Compression.GZipStream(new MemoryStream(compressedBytes, 0, compressedBytes.Length), System.IO.Compression.CompressionMode.Decompress))
            {
                MemoryStream memory    = new MemoryStream();
                byte[]       writeData = new byte[4096];
                int          resLen;
                while ((resLen = stream.Read(writeData, 0, writeData.Length)) > 0)
                {
                    memory.Write(writeData, 0, resLen);
                }
                var uncompressedBytes = memory.ToArray();
                uncompressedObj = Encoding.UTF8.GetString(uncompressedBytes, 0, uncompressedBytes.Length);
            }
            return(uncompressedObj);
        }
Exemple #11
0
        static byte [] UnZip(string data)
        {
            var          zipBytes = Convert.FromBase64String(data);
            MemoryStream mso      = new System.IO.MemoryStream();
            var          msi      = new System.IO.MemoryStream(zipBytes);
            var          gs       = new System.IO.Compression.GZipStream(msi, System.IO.Compression.CompressionMode.Decompress);

            byte[] tmp       = new byte [102400];
            var    readCount = 0;

            while ((readCount = gs.Read(tmp, 0, tmp.Length)) > 0)
            {
                mso.Write(tmp, 0, readCount);
            }
            byte [] res = mso.ToArray();

            return(res);
        }
Exemple #12
0
 /// <summary> 解压 byte[]  </summary>
 public static byte[] UGZipBt(byte[] data)
 {
     using (MemoryStream ms = new MemoryStream())
     {
         using (System.IO.Compression.GZipStream gz
                    = new System.IO.Compression.GZipStream(new MemoryStream(data), System.IO.Compression.CompressionMode.Decompress, true))
         {
             byte[] buffer = new byte[4096];
             int    rsv;
             while ((rsv = gz.Read(buffer, 0, buffer.Length)) > 0)
             {
                 ms.Write(buffer, 0, rsv);
             }
             gz.Close();
         }
         return(ms.ToArray());
     }
 }
Exemple #13
0
        /// <summary>
        ///  解压缩 *.Z 文件,可指定是否删除原文件。
        /// </summary>
        /// <param name="compressedFilePath"></param>
        /// <param name="destDir"></param>
        public static void DecompressLzw(string compressedFilePath, string destDir, bool deleSourse = false, bool overwrite = true)
        {
            string dest = destDir + "\\" + Path.GetFileNameWithoutExtension(compressedFilePath);

            if (File.Exists(dest))
            {
                if (overwrite)
                {
                    File.Delete(dest);
                }
                else
                {
                    return;
                }
            }

            Utils.FileUtil.CheckOrCreateDirectory(destDir);

            FileStream fs = new FileStream(compressedFilePath, FileMode.Open, FileAccess.Read);

            System.IO.Compression.GZipStream input = new  System.IO.Compression.GZipStream(fs, System.IO.Compression.CompressionMode.Decompress);
            //ICSharpCode.SharpZipLib.LZW.LzwInputStream input = new ICSharpCode.SharpZipLib.LZW.LzwInputStream(fs);

            FileStream output = new FileStream(dest, FileMode.Create);
            int        count = 0, size = 1024;

            byte[] buffer = new byte[size];
            while ((count = input.Read(buffer, 0, size)) > 0)
            {
                output.Write(buffer, 0, count); output.Flush();
            }
            output.Close();
            output.Dispose();
            input.Close();
            input.Dispose();


            //    ZipUtil.DecompressFile(compressedFilePath, dest);

            if (deleSourse)
            {
                File.Delete(compressedFilePath);
            }
        }
Exemple #14
0
 public static void Decompress(string fileToDecompress)
 {
     using (var inFile = System.IO.File.OpenRead(fileToDecompress))
     {
         using (var outFile = System.IO.File.Create(@"C:\Testmappe\test_new.txt"))
         {
             using (var decompress = new System.IO.Compression.GZipStream(inFile, System.IO.Compression.CompressionMode.Decompress))
             {
                 byte[] buffer = new byte[1024];
                 int    nRead;
                 while ((nRead = decompress.Read(buffer, 0, buffer.Length)) > 0)
                 {
                     outFile.Write(buffer, 0, nRead);
                 }
                 /* http://stackoverflow.com/questions/1581694/gzipstream-and-decompression */
             }
         }
     }
 }
Exemple #15
0
        public static byte[] DecompressGzip(Stream input)
        {
            using (
                var decompressor = new System.IO.Compression.GZipStream(input,
                                                                        System.IO.Compression.CompressionMode.Decompress))
            {
                var buffer = new byte[BufferSize];

                using (var output = new MemoryStream())
                {
                    int read;
                    while ((read = decompressor.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        output.Write(buffer, 0, read);
                    }
                    return(output.ToArray());
                }
            }
        }
Exemple #16
0
        public string UnZip(string compressedText)
        {
            byte[] gzBuffer = Convert.FromBase64String(compressedText);
            using (MemoryStream ms = new MemoryStream())
            {
                int msgLength = BitConverter.ToInt32(gzBuffer, 0);
                ms.Write(gzBuffer, 4, gzBuffer.Length - 4);

                byte[] buffer = new byte[msgLength];

                ms.Position = 0;
                using (System.IO.Compression.GZipStream zip = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
                {
                    zip.Read(buffer, 0, buffer.Length);
                }

                return System.Text.Encoding.Unicode.GetString(buffer, 0, buffer.Length);
            }
        }
Exemple #17
0
        public static string Decompress(string compressedText)
        {
            byte[] gzBuffer = Convert.FromBase64String(compressedText);
            using (MemoryStream ms = new MemoryStream())
            {
                int msgLength = BitConverter.ToInt32(gzBuffer, 0);
                ms.Write(gzBuffer, 4, (gzBuffer.Length - 4));

                byte[] buffer = new byte[msgLength];

                ms.Position = 0;
                using (System.IO.Compression.GZipStream zip = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress))
                {
                    zip.Read(buffer, 0, buffer.Length);
                }

                return(Encoding.UTF8.GetString(buffer));
            }
        }
Exemple #18
0
 /// <summary>
 /// 进行gzip的解压缩
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 private static byte[] UnGZip(byte[] data)
 {
     using (MemoryStream dms = new MemoryStream())
     {
         using (MemoryStream cms = new MemoryStream(data))
         {
             using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms, System.IO.Compression.CompressionMode.Decompress))
             {
                 byte[] bytes = new byte[1024];
                 int    len   = 0;
                 while ((len = gzip.Read(bytes, 0, bytes.Length)) > 0)
                 {
                     dms.Write(bytes, 0, len);
                 }
             }
         }
         return(dms.ToArray());
     }
 }
Exemple #19
0
        public static byte[] DecompressGzip(Stream input, Encoding e)
        {
            byte[] tempOutput;
            using (System.IO.Compression.GZipStream decompressor = new System.IO.Compression.GZipStream(input, System.IO.Compression.CompressionMode.Decompress))
            {
                int read   = 0;
                var buffer = new byte[375];

                using (MemoryStream output = new MemoryStream())
                {
                    while ((read = decompressor.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        output.Write(buffer, 0, read);
                    }
                    tempOutput = output.ToArray();
                }
            }
            return(tempOutput);
        }
Exemple #20
0
 public static System.IO.MemoryStream TryLoadResourceStream(string streamName)
 {
     if (ResourceAssembly == null)
     {
         return(null);
     }
     foreach (string name in ResourceAssembly.GetManifestResourceNames())
     {
         if (name.EndsWith(streamName, StringComparison.OrdinalIgnoreCase))
         {
             // Try to get as is
             using (System.IO.Stream s = ResourceAssembly.GetManifestResourceStream(name))
                 if (s != null)
                 {
                     return(new System.IO.MemoryStream(new System.IO.BinaryReader(s).ReadBytes((int)s.Length)));
                 }
         }
         if (name.EndsWith(streamName + ".gz", StringComparison.OrdinalIgnoreCase))
         {
             // M'kay, maybe it's compressed
             using (System.IO.Stream s = ResourceAssembly.GetManifestResourceStream(name))
             {
                 if (s != null)
                 {
                     using (System.IO.Compression.GZipStream gz = new System.IO.Compression.GZipStream(s, System.IO.Compression.CompressionMode.Decompress, true))
                     {
                         System.IO.MemoryStream ms = new System.IO.MemoryStream();
                         byte[] bytes = new byte[16384];
                         int    n;
                         while ((n = gz.Read(bytes, 0, bytes.Length)) != 0)
                         {
                             ms.Write(bytes, 0, n);
                         }
                         ms.Position = 0;
                         return(ms);
                     }
                 }
             }
         }
     }
     // Better luck next time
     return(null);
 }
Exemple #21
0
        private static MemoryStream Decompress(byte[] gzip)
        {
            using (var stream = new System.IO.Compression.GZipStream(new MemoryStream(gzip), System.IO.Compression.CompressionMode.Decompress))
            {
                const int    size   = 4096;
                byte[]       buffer = new byte[size];
                MemoryStream memory = new MemoryStream();

                int count = 0;
                do
                {
                    count = stream.Read(buffer, 0, size);
                    if (count > 0)
                    {
                        memory.Write(buffer, 0, count);
                    }
                }while (count > 0);
                return(memory);
            }
        }
Exemple #22
0
        /// <summary>
        /// 解压
        /// </summary>
        /// <param name="value">值</param>
        public static byte[] Decompress(byte[] value)
        {
            var ms        = new MicrosoftSystem.IO.MemoryStream(value);
            var cs        = new MicrosoftSystem.IO.Compression.GZipStream(ms, MicrosoftSystem.IO.Compression.CompressionMode.Decompress);
            var outBuffer = new MicrosoftSystem.IO.MemoryStream();
            var block     = new byte[1024];

            while (true)
            {
                var bytesRead = cs.Read(block, 0, block.Length);

                if (bytesRead <= 0)
                {
                    break;
                }
                outBuffer.Write(block, 0, bytesRead);
            }
            cs.Close();
            return(outBuffer.ToArray());
        }
        public byte[] GetPacketDgram()
        {
            TCPPacketFlags Flags = this.GetPacketFlags();

            byte[] Dgram = null;

            try
            {
                if ((Flags & TCPPacketFlags.GZipCompressed) > 0)
                {
                    this.Content.Seek(0, System.IO.SeekOrigin.Begin);
                    int OriginalLength = this.Content.BR.ReadInt32();

                    System.IO.Compression.GZipStream GZip = new System.IO.Compression.GZipStream(this.Content, System.IO.Compression.CompressionMode.Decompress);
                    //Dim DecompressedBuffer As Byte() = New Byte(OriginalLength - 1) {}
                    //Dim totalCount As Integer = TCPPacketBuilder.ReadAllBytesFromStream(GZip, DecompressedBuffer)
                    Dgram = new byte[OriginalLength];
                    GZip.Read(Dgram, 0, OriginalLength);

                    GZip.Close();
                }
                else
                {
                    //Dgram = New Byte(totalCount - 1) {}
                    //Array.Copy(DecompressedBuffer, 0, Dgram, 0, totalCount)
                    Dgram = this.Content.ToArray();
                }



                this.Header.Close();
                this.Content.Close();
                this.SetState(PacketState.Empty);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(Dgram);
        }
        /// <summary>
        /// 解压缩一个字节流
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        internal static byte[] Decompress(byte[] buffer)
        {
            using (var source = new System.IO.MemoryStream(buffer))
            {
                source.Seek(0, System.IO.SeekOrigin.Begin);

                using (var dest = new System.IO.MemoryStream())
                    using (var gz = new System.IO.Compression.GZipStream(source, System.IO.Compression.CompressionMode.Decompress))
                    {
                        var buf   = new byte[0x400];
                        var count = 0;
                        while ((count = gz.Read(buf, 0, buf.Length)) > 0)
                        {
                            dest.Write(buf, 0, count);
                        }

                        dest.Close();
                        return(dest.ToArray());
                    }
            }
        }
Exemple #25
0
        private static string DecompressBytes(byte[] compressedBytes)
        {
            string uncompressedObj = string.Empty;

            // http://stackoverflow.com/questions/12894406/inflating-a-compressed-byte-array-in-winrt
            // The reason for skipping the first two bytes is that they are part of the zlib spec and not the deflate spec:
            // http://george.chiramattel.com/blog/2007/09/deflatestream-block-length-does-not-match.html
            using (System.IO.Compression.GZipStream stream = new System.IO.Compression.GZipStream(new MemoryStream(compressedBytes, 0, compressedBytes.Length), System.IO.Compression.CompressionMode.Decompress))
            {
                MemoryStream memory    = new MemoryStream();
                byte[]       writeData = new byte[4096];
                int          resLen;
                while ((resLen = stream.Read(writeData, 0, writeData.Length)) > 0)
                {
                    memory.Write(writeData, 0, resLen);
                }
                var uncompressedBytes = memory.ToArray();
                uncompressedObj = Encoding.UTF8.GetString(uncompressedBytes, 0, uncompressedBytes.Length);
            }
            return(uncompressedObj);
        }
Exemple #26
0
        public static string UnZip(string value)
        {
            //Transform string into byte[]
            byte[] byteArray = new byte[value.Length];
            int    indexBA   = 0;

            foreach (char item in value.ToCharArray())
            {
                byteArray[indexBA++] = (byte)item;
            }


            //Prepare for decompress
            System.IO.MemoryStream           ms = new System.IO.MemoryStream(byteArray);
            System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms,
                                                                                       System.IO.Compression.CompressionMode.Decompress);


            //Reset variable to collect uncompressed result
            byteArray = new byte[byteArray.Length];


            //Decompress
            int rByte = sr.Read(byteArray, 0, byteArray.Length);


            //Transform byte[] unzip data to string
            System.Text.StringBuilder sB = new System.Text.StringBuilder(rByte);
            //Read the number of bytes GZipStream red and do not a for each bytes in
            //resultByteArray;
            for (int i = 0; i < rByte; i++)
            {
                sB.Append((char)byteArray[i]);
            }
            sr.Close();
            ms.Close();
            sr.Dispose();
            ms.Dispose();
            return(sB.ToString());
        }
Exemple #27
0
 /// <summary>
 /// 解压缩图片字节
 /// </summary>
 /// <param name="picBytes"></param>
 /// <returns></returns>
 public static byte[] GetGzipPicBytes(byte[] picBytes)
 {
     byte[] result = null;
     using (MemoryStream dms = new MemoryStream())
     {
         using (MemoryStream cms = new MemoryStream(picBytes))
         {
             using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms, System.IO.Compression.CompressionMode.Decompress))
             {
                 byte[] bytes = new byte[1024];
                 int    len   = 0;
                 //读取压缩流,同时会被解压
                 while ((len = gzip.Read(bytes, 0, bytes.Length)) > 0)
                 {
                     dms.Write(bytes, 0, len);
                 }
             }
         }
         result = dms.ToArray();
     }
     return(result);
 }
Exemple #28
0
 static byte[] Decompress(byte[] gzip)
 {
     using (System.IO.Compression.GZipStream stream = new System.IO.Compression.GZipStream(new System.IO.MemoryStream(gzip),
                                                                                           System.IO.Compression.CompressionMode.Decompress))
     {
         const int size   = 4096;
         byte[]    buffer = new byte[size];
         using (System.IO.MemoryStream memory = new System.IO.MemoryStream())
         {
             int count = 0;
             do
             {
                 count = stream.Read(buffer, 0, size);
                 if (count > 0)
                 {
                     memory.Write(buffer, 0, count);
                 }
             }while (count > 0);
             return(memory.ToArray());
         }
     }
 }
            /// <summary>
            /// Downloads one TW file
            /// </summary>
            private void DownloadFile(string urlFile, string outputFile)
            {
                var client = Network.CreateWebRequest(urlFile);

                using (var response = client.GetResponse())
                {
                    var stream = response.GetResponseStream();
                    Debug.Assert(stream != null);
                    using (var unzip = new System.IO.Compression.GZipStream(stream, System.IO.Compression.CompressionMode.Decompress))
                    {
                        using (var writer = new FileStream(outputFile, FileMode.Create))
                        {
                            var block = new byte[4096];
                            int read;
                            while ((read = unzip.Read(block, 0, block.Length)) != 0)
                            {
                                writer.Write(block, 0, read);
                            }
                        }
                    }
                }
            }
Exemple #30
0
        public static byte[] DownloadData(this WebClient client, string address, bool handleGzip)
        {
            if (!handleGzip)
            {
                return(client.DownloadData(address));
            }

            var result = client.DownloadData(address);

            if (result != null && result.Length > 3 && result[0] == 31 && result[1] == 139 && result[2] == 8)
            {
                // GZIP:
                using (var stream = new System.IO.Compression.GZipStream(new MemoryStream(result), System.IO.Compression.CompressionMode.Decompress))
                {
                    var buffer = new byte[4096];
                    using (var memory = new MemoryStream())
                    {
                        while (true)
                        {
                            var count = stream.Read(buffer, 0, 4096);
                            if (count > 0)
                            {
                                memory.Write(buffer, 0, count);
                            }
                            else
                            {
                                break;
                            }
                        }

                        return(memory.ToArray());
                    }
                }
            }
            else
            {
                return(result);
            }
        }
 /// <summary>
 /// 解壓縮BytyArray資料
 /// </summary>
 /// <param name="compressString">The compress string.</param>
 /// <returns>System.String.</returns>
 public static byte[] unCompressString(string compressString)
 {
     byte[] zippedData = Convert.FromBase64String(compressString.ToString());
     System.IO.MemoryStream           ms = new System.IO.MemoryStream(zippedData);
     System.IO.Compression.GZipStream compressedzipStream = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress);
     System.IO.MemoryStream           outBuffer           = new System.IO.MemoryStream();
     byte[] block = new byte[1024];
     while (true)
     {
         int bytesRead = compressedzipStream.Read(block, 0, block.Length);
         if (bytesRead <= 0)
         {
             break;
         }
         else
         {
             outBuffer.Write(block, 0, bytesRead);
         }
     }
     compressedzipStream.Close();
     return(outBuffer.ToArray());
 }
Exemple #32
0
        }     // End Sub CompressFile

        // http://msdn.microsoft.com/en-us/library/ms404280(v=vs.80).aspx
        // And swiftly fail on a large file because buffer < origFile.Length
        private static void DeCompressFile_ShittyMsdnVersion(string CompressedFile, string DeCompressedFile)
        {
            System.IO.FileStream sourceFile      = System.IO.File.OpenRead(CompressedFile);
            System.IO.FileStream destinationFile = System.IO.File.Create(DeCompressedFile);

            // Because the uncompressed size of the file is unknown,
            // we are using an arbitrary buffer size.
            byte[] buffer = new byte[1024 * 1024 * 100]; // Note: Fails here when buffer < FileSizeOfUncompressedFile
            int    n;

            using (System.IO.Compression.GZipStream input = new System.IO.Compression.GZipStream(sourceFile,
                                                                                                 System.IO.Compression.CompressionMode.Decompress, false))
            {
                Console.WriteLine("Decompressing {0} to {1}.", sourceFile.Name, destinationFile.Name);

                n = input.Read(buffer, 0, buffer.Length);
                destinationFile.Write(buffer, 0, n);
            } // End Using System.IO.Compression.GZipStream input

            // Close the files.
            sourceFile.Close();
            destinationFile.Close();
        } // End Sub DeCompressFile_ShittyMsdnVersion
Exemple #33
0
        public object byteArrayToObject(byte[] data, bool bIsCompressed)
        {
            object obj = null;

            if (bIsCompressed)
            {
                //Read the compressed data, copy the reference
                byte[] zipData = data;

                //Get the size of the data
                int dataLength = BitConverter.ToInt32(zipData, 0);

                using (System.IO.MemoryStream memStream = new System.IO.MemoryStream())
                {
                    //Remove size from the compressed data
                    memStream.Write(zipData, 4, zipData.Length - 4);
                    memStream.Seek(0, System.IO.SeekOrigin.Begin);
                    using (System.IO.Compression.GZipStream zip
                               = new System.IO.Compression.GZipStream(
                                     memStream, System.IO.Compression.CompressionMode.Decompress))
                    {
                        data = new byte[dataLength];
                        //Decompress
                        zip.Read(data, 0, dataLength);
                    }
                }
            }

            //Deserialize
            System.IO.Stream streamWrite = new System.IO.MemoryStream(data);
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryWrite
                = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            streamWrite.Seek(0, System.IO.SeekOrigin.Begin);
            obj = binaryWrite.Deserialize(streamWrite);

            return(obj);
        }
Exemple #34
0
        private static System.IO.Stream GetStream(byte[] bs, byte key, bool gzip)
        {
            int len = bs.Length;

            for (int iCount = 0; iCount < len; iCount++, key++)
            {
                bs[iCount] = ((byte)(bs[iCount] ^ key));
            }
            System.IO.MemoryStream ms = null;
            if (gzip)
            {
                var stream = new System.IO.Compression.GZipStream(
                    new System.IO.MemoryStream(bs),
                    System.IO.Compression.CompressionMode.Decompress);
                ms = new System.IO.MemoryStream();
                var bsTemp = new byte[1024];
                while (true)
                {
                    len = stream.Read(bsTemp, 0, bsTemp.Length);
                    if (len > 0)
                    {
                        ms.Write(bsTemp, 0, len);
                    }
                    else
                    {
                        break;
                    }
                }
                stream.Close();
                ms.Position = 0;
            }
            else
            {
                ms = new System.IO.MemoryStream(bs);
            }
            return(ms);
        }
Exemple #35
0
 /// <summary>
 /// 测试成功
 /// </summary>
 static void GzipTest()
 {
     byte[] cbytes = null;
     //压缩
     using (MemoryStream cms = new MemoryStream())
     {
         using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms, System.IO.Compression.CompressionMode.Compress))
         {
             //将数据写入基础流,同时会被压缩
             var    str   = File.ReadAllText(@"jsons/print.json");
             byte[] bytes = Encoding.UTF8.GetBytes(str);
             Console.WriteLine($"bytes.Length:{bytes.Length}");
             gzip.Write(bytes, 0, bytes.Length);
         }
         cbytes = cms.ToArray();
         Console.WriteLine($"cbytes.Length:{cbytes.Length}");
     }
     //解压
     using (MemoryStream dms = new MemoryStream())
     {
         using (MemoryStream cms = new MemoryStream(cbytes))
         {
             using (System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(cms, System.IO.Compression.CompressionMode.Decompress))
             {
                 byte[] bytes = new byte[1024];
                 int    len   = 0;
                 //读取压缩流,同时会被解压
                 while ((len = gzip.Read(bytes, 0, bytes.Length)) > 0)
                 {
                     dms.Write(bytes, 0, len);
                 }
             }
         }
         Console.WriteLine(Encoding.UTF8.GetString(dms.ToArray()));
     }
 }
Exemple #36
0
        // Gaetano 'FiR3N3T' Padalino Optimization - [email protected]
        internal static byte[] DecompressGzip(System.IO.Stream streamInput)
        {
            using (System.IO.Stream streamOutput = new System.IO.MemoryStream())
            {
                int iOutputLength = 0;

                byte[] readBuffer = new byte[4096];

                using (System.IO.Compression.GZipStream streamGZip = new System.IO.Compression.GZipStream(streamInput, System.IO.Compression.CompressionMode.Decompress))
                {
                    int i;
                    while ((i = streamGZip.Read(readBuffer, 0, readBuffer.Length)) != 0)
                    {
                        streamOutput.Write(readBuffer, 0, i);
                        iOutputLength = iOutputLength + i;
                    }
                }

                byte[] buffer = new byte[iOutputLength];
                streamOutput.Position = 0;
                streamOutput.Read(buffer, 0, buffer.Length);
                return(buffer);
            }
        }
Exemple #37
0
        private byte[] DecGzipData(byte[] gzipData)
        {
            byte[] bytes = new byte[4096];
            byte[] decoded;

            using (System.IO.Compression.GZipStream stream = new System.IO.Compression.GZipStream(new MemoryStream(gzipData), System.IO.Compression.CompressionMode.Decompress))
            {
                using (MemoryStream memory = new MemoryStream())
                {
                    int count = 0;
                    do
                    {
                        count = stream.Read(bytes, 0, 4096);
                        if (count > 0)
                        {
                            memory.Write(bytes, 0, count);
                        }
                    }while (count > 0);
                    decoded = memory.ToArray();
                }
            }

            return(decoded);
        }
Exemple #38
0
        //public static byte[] DecompressGZIP(byte[] gzip)
        //{
        //    using (var stream = new Ionic.Zlib.DeflateStream(new MemoryStream(gzip), Ionic.Zlib.CompressionMode.Decompress))
        //    {
        //        var outStream = new MemoryStream();
        //        //const Int64 size = gzip.Length; //Playing around with various sizes didn't help

        //        byte[] buffer = new byte[gzip.Length];

        //        int read;
        //        while ((read = stream.Read(buffer, 0, gzip.Length)) > 0)
        //        {
        //            outStream.Write(buffer, 0, read);
        //            read = 0;
        //        }

        //        return outStream.ToArray();
        //    }
        //}

        static byte[] Decompress(byte[] gzip)
        {
            // Create a GZIP stream with decompression mode.
            // ... Then create a buffer and write into while reading from the GZIP stream.
            using (System.IO.Compression.GZipStream stream = new System.IO.Compression.GZipStream(new MemoryStream(gzip),
                                                                                                  System.IO.Compression.CompressionMode.Decompress))
            {
                const int size   = 4096;
                byte[]    buffer = new byte[gzip.Length];
                using (MemoryStream memory = new MemoryStream())
                {
                    int count = 0;
                    do
                    {
                        count = stream.Read(buffer, 0, gzip.Length);
                        if (count > 0)
                        {
                            memory.Write(buffer, 0, count);
                        }
                    }while (count > 0);
                    return(memory.ToArray());
                }
            }
        }
Exemple #39
0
		void StopCore(string msg)
		{
			coredead = true;
			Console.WriteLine("Core stopped.");
			for (int i = 0; i < soundbuffer.Length; i++)
				soundbuffer[i] = 0;

			var gz = new System.IO.Compression.GZipStream(
				new MemoryStream(Convert.FromBase64String(dispfont), false),
				System.IO.Compression.CompressionMode.Decompress);
			byte[] font = new byte[2048];
			gz.Read(font, 0, 2048);
			gz.Dispose();
			
			// cores aren't supposed to have bad dependencies like System.Drawing, right?

			int scx = 0;
			int scy = 0;

			foreach (char c in msg)
			{
				if (scx == 240 || c == '\n')
				{
					scy += 8;
					scx = 0;
				}
				if (scy == 160)
					break;
				if (c == '\r' || c == '\n')
					continue;
				if (c < 256 && c != ' ')
				{
					int fpos = c * 8;
					for (int j = 0; j < 8; j++)
					{
						for (int i = 0; i < 8; i++)
						{
							if ((font[fpos] >> i & 1) != 0)
								videobuffer[(scy + j) * 240 + scx + i] = unchecked((int)0xffff0000);
							else
								videobuffer[(scy + j) * 240 + scx + i] = unchecked((int)0xff000000);
						}
						fpos++;
					}
				}
				scx += 8;
			}
		}
Exemple #40
0
        public void receiveFileThread()
        {
            Directory.CreateDirectory(Path.GetDirectoryName(this.mStrFilePath));

            System.IO.FileStream wout = null;
            for (int it = 0; it < 3; ++it)
            {
                try
                {
                    wout = new System.IO.FileStream(this.mStrFilePath, FileMode.Create);
                }
                catch (Exception ex)
                {
                    this.mParent.addLog("「" + this.mStrFilePath + "」が上書きできませんでした");
                    System.Threading.Thread.Sleep(500);
                }
                if (wout != null)
                {
                    if (it > 0)
                    {
                        this.mParent.addLog("「" + this.mStrFilePath + "」に書き込めました");
                    }
                    break;
                }
            }

            if (this.mData != null)
            {
                System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(new MemoryStream(this.mData), System.IO.Compression.CompressionMode.Decompress);
            //                System.IO.Compression.DeflateStream gzip = new System.IO.Compression.DeflateStream(new MemoryStream(this.mData), System.IO.Compression.CompressionMode.Decompress);
            //                MemoryStream gzip = new MemoryStream(this.mData);
                byte[] buffer = new byte[1024 * 1024];
                while (true)
                {
                    int nReadSize = gzip.Read(buffer, 0, buffer.Length);
                    if (nReadSize == 0)
                        break;
                    if (wout != null)
                        wout.Write(buffer, 0, nReadSize);
                }
                gzip.Close();
            }
            this.mParent.addLog("「" + this.mStrFilePath + "」を受信終了");

            this.mParent.endReceiveFile(this.mStrFilePath);
        }
Exemple #41
0
 /// <summary>
 /// Downloads one TW file
 /// </summary>
 private void DownloadFile(string urlFile, string outputFile)
 {
     var client = Network.CreateWebRequest(urlFile);
     using (var response = client.GetResponse())
     {
         var stream = response.GetResponseStream();
         Debug.Assert(stream != null);
         using (var unzip = new System.IO.Compression.GZipStream(stream, System.IO.Compression.CompressionMode.Decompress))
         {
             using (var writer = new FileStream(outputFile, FileMode.Create))
             {
                 var block = new byte[4096];
                 int read;
                 while ((read = unzip.Read(block, 0, block.Length)) != 0)
                 {
                     writer.Write(block, 0, read);
                 }
             }
         }
     }
 }
        public void Zlib_GZipStream_FileName_And_Comments()
        {
            // select the name of the zip file
            string FileToCompress = System.IO.Path.Combine(TopLevelDir, "Zlib_GZipStream.dat");
            Assert.IsFalse(System.IO.File.Exists(FileToCompress), "The temporary zip file '{0}' already exists.", FileToCompress);
            byte[] working = new byte[WORKING_BUFFER_SIZE];
            int n = -1;

            int sz = this.rnd.Next(21000) + 15000;
            TestContext.WriteLine("  Creating file: {0} sz({1})", FileToCompress, sz);
            CreateAndFillFileText(FileToCompress, sz);

            System.IO.FileInfo fi1 = new System.IO.FileInfo(FileToCompress);
            int crc1 = DoCrc(FileToCompress);

            // four trials, all combos of FileName and Comment null or not null.
            for (int k = 0; k < 4; k++)
            {
                string CompressedFile = String.Format("{0}-{1}.compressed", FileToCompress, k);

                using (Stream input = File.OpenRead(FileToCompress))
                {
                    using (FileStream raw = new FileStream(CompressedFile, FileMode.Create))
                    {
                        using (GZipStream compressor =
                               new GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, true))
                        {
                            // FileName is optional metadata in the GZip bytestream
                            if (k % 2 == 1)
                                compressor.FileName = FileToCompress;

                            // Comment is optional metadata in the GZip bytestream
                            if (k > 2)
                                compressor.Comment = "Compressing: " + FileToCompress;

                            byte[] buffer = new byte[1024];
                            n = -1;
                            while (n != 0)
                            {
                                if (n > 0)
                                    compressor.Write(buffer, 0, n);

                                n = input.Read(buffer, 0, buffer.Length);
                            }
                        }
                    }
                }

                System.IO.FileInfo fi2 = new System.IO.FileInfo(CompressedFile);

                Assert.IsTrue(fi1.Length > fi2.Length, String.Format("Compressed File is not smaller, trial {0} ({1}!>{2})", k, fi1.Length, fi2.Length));


                // decompress twice:
                // once with System.IO.Compression.GZipStream and once with Alienlab.Zlib.GZipStream
                for (int j = 0; j < 2; j++)
                {
                    using (var input = System.IO.File.OpenRead(CompressedFile))
                    {

                        Stream decompressor = null;
                        try
                        {
                            switch (j)
                            {
                                case 0:
                                    decompressor = new Alienlab.Zlib.GZipStream(input, CompressionMode.Decompress, true);
                                    break;
                                case 1:
                                    decompressor = new System.IO.Compression.GZipStream(input, System.IO.Compression.CompressionMode.Decompress, true);
                                    break;
                            }

                            string DecompressedFile =
                                                        String.Format("{0}.{1}.decompressed", CompressedFile, (j == 0) ? "Ionic" : "BCL");

                            TestContext.WriteLine("........{0} ...", System.IO.Path.GetFileName(DecompressedFile));

                            using (var s2 = System.IO.File.Create(DecompressedFile))
                            {
                                n = -1;
                                while (n != 0)
                                {
                                    n = decompressor.Read(working, 0, working.Length);
                                    if (n > 0)
                                        s2.Write(working, 0, n);
                                }
                            }

                            int crc2 = DoCrc(DecompressedFile);
                            Assert.AreEqual<Int32>(crc1, crc2);

                        }
                        finally
                        {
                            if (decompressor != null)
                                decompressor.Dispose();
                        }
                    }
                }
            }
        }
Exemple #43
0
 private static string ReadFontSet(byte[] userSetBytes)
 {
     if (string.IsNullOrEmpty(appPath))
     {
         return null;
     }
     try
     {
         //byte[] userSetBytes = System.IO.File.ReadAllBytes(bAsisFontSetPath);
         System.IO.MemoryStream uncomDataStream = new System.IO.MemoryStream(userSetBytes);
         using (System.IO.MemoryStream tempMemory = new System.IO.MemoryStream())
         {
             gzip = new System.IO.Compression.GZipStream(uncomDataStream, System.IO.Compression.CompressionMode.Decompress);
             int count = 0;
             byte[] tempByte = new byte[1000];
             while ((count = gzip.Read(tempByte, 0, tempByte.Length)) > 0)
             {
                 tempMemory.Write(tempByte, 0, count);
             }
             gzip.Close();
             uncomDataStream.Close();
             string userSet = System.Text.UTF8Encoding.UTF8.GetString(tempMemory.ToArray());
             //tempMemory.Close();
             return userSet;
         }
     }
     catch (System.Exception)
     {
         return null;
     }
 }
Exemple #44
0
        public string GetMatchClientPayloadString()
        {
            string thiscontentType = GetHeaderMatchClient("Content-Type:");
            if (string.IsNullOrEmpty(thiscontentType))
                return "";
            string retval = "";

            foreach (string contenttype in TextContentTypes)
            {
                if (thiscontentType.ToLower().Contains(contenttype))
                {
                    string contentencoding = GetHeaderMatchClient("Content-Encoding:");
                    _matchClientPayload.Position = 0;
                    if (contentencoding.ToLower().Contains("deflate"))
                    {
                        System.IO.Compression.DeflateStream ds = new System.IO.Compression.DeflateStream(_matchClientPayload, System.IO.Compression.CompressionMode.Decompress);
                        byte[] buffer = new byte[8192];
                        MemoryStream ms = new MemoryStream();
                        int bytesread = ds.Read(buffer, 0, buffer.Length);
                        while (bytesread != 0)
                        {
                            ms.Write(buffer, 0, bytesread);
                            bytesread = ds.Read(buffer, 0, buffer.Length);

                        }
                        retval = System.Text.Encoding.Default.GetString(ms.GetBuffer());
                    }
                    else if (contentencoding.ToLower().Contains("gzip"))
                    {
                        System.IO.Compression.GZipStream gz = new System.IO.Compression.GZipStream(_matchClientPayload, System.IO.Compression.CompressionMode.Decompress);

                        byte[] buffer = new byte[8192];
                        MemoryStream ms = new MemoryStream();
                        int bytesread = 0;
                        try
                        {
                            bytesread = gz.Read(buffer, 0, buffer.Length);
                        }
                        catch (Exception ex) { _downStreamExceptions.Add(ex); }
                        while (bytesread != 0 & gz.CanRead)
                        {
                            ms.Write(buffer, 0, bytesread);
                            try
                            {
                                bytesread = gz.Read(buffer, 0, buffer.Length);
                            }
                            catch (Exception ex) { _downStreamExceptions.Add(ex); break; }

                        }
                        retval = System.Text.Encoding.Default.GetString(ms.GetBuffer(), 0, (int)ms.Length);
                    }
                    else
                    {
                        byte[] thebytes = new byte[_matchClientPayload.Length];
                        _matchClientPayload.Read(thebytes, 0,(int) _matchClientPayload.Length);
                        retval = System.Text.Encoding.Default.GetString(thebytes, 0, (int)_matchClientPayload.Length);
                    }

                    break;
                }
            }
            return retval;

        }
Exemple #45
0
        /// ファイルを受信する
        public static void receiveFiles(Network network, String strDirectory, FolderLANSync.SyncFolderMaster parent)
        {
            if ( strDirectory.Length > 3 && !Directory.Exists(strDirectory))
                Directory.CreateDirectory(strDirectory);

            while (true)
            {
                byte nFlag = (byte)network.receiveByte();
                if (nFlag == 0)
                    break;

                String strFilePath = network.receiveString();

                parent.addLog("「" + strFilePath + "」を受信開始");

                byte[] data = network.receiveBinary();  // 先に受信してしまう

                strFilePath = Path.Combine(strDirectory, strFilePath);
                parent.beginReceiveFile(strFilePath);   //フォルダを変更する前に呼び出す.監視をオフにする。

            #if true
                // スレッド同期とってないし封印
                {
                    ReceiveThread receiveThread = new ReceiveThread(data, parent, strFilePath);
                    Thread thread = new Thread(new ThreadStart(receiveThread.receiveFileThread));
                    thread.Start();
                }
            #else
                Directory.CreateDirectory(Path.GetDirectoryName(strFilePath));

                System.IO.FileStream wout = null;
                for (int it = 0; it < 3; ++it)
                {
                    try
                    {
                        wout = new System.IO.FileStream(strFilePath, FileMode.Create);
                    }
                    catch (Exception ex)
                    {
                        parent.addLog("「" + strFilePath + "」が上書きできませんでした");
                        System.Threading.Thread.Sleep(500);
                    }
                    if (wout != null)
                    {
                        if (it > 0)
                        {
                            parent.addLog("「" + strFilePath + "」に書き込めました");
                        }
                    }
                }

                if (data != null)
                {
                    System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(new MemoryStream(data), System.IO.Compression.CompressionMode.Decompress);
                    byte[] buffer = new byte[1024 * 1024 * 50];
                    while (true)
                    {
                        int nReadSize = gzip.Read(buffer, 0, buffer.Length);
                        if (nReadSize == 0)
                            break;
                        if ( wout != null )
                            wout.Write(buffer, 0, nReadSize);
                    }
                    gzip.Close();
                }
                parent.addLog("「" + strFilePath + "」を受信終了");
                if (wout != null)
                   wout.Close();

                parent.endReceiveFile(strFilePath);   //フォルダを変更する前に呼び出す.監視をオフにする。
            #endif
            }
        }
Exemple #46
0
 public static System.IO.MemoryStream TryLoadResourceStream(string streamName)
 {
     if (ResourceAssembly == null)
         return null;
     foreach (string name in ResourceAssembly.GetManifestResourceNames())
     {
         if (name.EndsWith(streamName, StringComparison.OrdinalIgnoreCase))
         {
             // Try to get as is
             using (System.IO.Stream s = ResourceAssembly.GetManifestResourceStream(name))
                 if (s != null)
                     return new System.IO.MemoryStream(new System.IO.BinaryReader(s).ReadBytes((int)s.Length));
         }
         if (name.EndsWith(streamName + ".gz", StringComparison.OrdinalIgnoreCase))
         {
             // M'kay, maybe it's compressed
             using (System.IO.Stream s = ResourceAssembly.GetManifestResourceStream(name))
             {
                 if (s != null)
                     using (System.IO.Compression.GZipStream gz = new System.IO.Compression.GZipStream(s, System.IO.Compression.CompressionMode.Decompress, true))
                     {
                         System.IO.MemoryStream ms = new System.IO.MemoryStream();
                         byte[] bytes = new byte[16384];
                         int n;
                         while ((n = gz.Read(bytes, 0, bytes.Length)) != 0)
                             ms.Write(bytes, 0, n);
                         ms.Position = 0;
                         return ms;
                     }
             }
         }
     }
     // Better luck next time
     return null;
 }
Exemple #47
0
        public byte[] GetMatchClientPayload()
        {
            Stream thestream = null;

            string transferEncoding = GetHeaderMatchClient("Transfer-Encoding:");
            if (transferEncoding.Contains("chunked"))
            {
                thestream = DoChunkedTransferEndcoding(_matchClientPayload);
            }
            else
            {
                thestream = _matchClientPayload;
            }
            byte[] retval = null;

            string contentencoding = GetHeaderMatchClient("Content-Encoding:");
            thestream.Position = 0;
            if (contentencoding.ToLower().Contains("deflate"))
            {
                System.IO.Compression.DeflateStream ds = new System.IO.Compression.DeflateStream(thestream, System.IO.Compression.CompressionMode.Decompress);
                byte[] buffer = new byte[8192];
                MemoryStream ms = new MemoryStream();
                int bytesread = ds.Read(buffer, 0, buffer.Length);
                while (bytesread != 0)
                {
                    ms.Write(buffer, 0, bytesread);
                    bytesread = ds.Read(buffer, 0, buffer.Length);

                }
                retval = ms.GetBuffer();
            }
            else if (contentencoding.ToLower().Contains("gzip"))
            {
                System.IO.Compression.GZipStream gz = new System.IO.Compression.GZipStream(thestream, System.IO.Compression.CompressionMode.Decompress);

                byte[] buffer = new byte[8192];
                MemoryStream ms = new MemoryStream();
                int bytesread = 0;
                try
                {
                    bytesread = gz.Read(buffer, 0, buffer.Length);
                }
                catch (Exception ex)
                {
                    _downStreamExceptions.Add(ex);
                    retval = new byte[_matchClientPayload.Length];
                    thestream.Position = 0;
                    thestream.Read(retval, 0, (int)thestream.Length);
                }
                while (bytesread != 0 & gz.CanRead)
                {
                    ms.Write(buffer, 0, bytesread);
                    try
                    {
                        bytesread = gz.Read(buffer, 0, buffer.Length);
                    }
                    catch(Exception ex)
                    {
                        _downStreamExceptions.Add(ex);
                        break; 
                    }

                }
                retval = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(retval, 0, (int)ms.Length);
            }
            else
            {
                retval = new byte[thestream.Length];
                thestream.Position = 0;
                thestream.Read(retval, 0, (int)thestream.Length);
            }
            return retval;
        }
Exemple #48
0
        public byte[] GetClientPayload()
        {
            byte[] retval = null;

            string contentencoding = GetHeaderClient("Content-Encoding:");
            _clientPayload.Position = 0;
            if (contentencoding.ToLower().Contains("deflate"))
            {
                System.IO.Compression.DeflateStream ds = new System.IO.Compression.DeflateStream(_clientPayload, System.IO.Compression.CompressionMode.Decompress);
                byte[] buffer = new byte[8192];
                MemoryStream ms = new MemoryStream();
                int bytesread = ds.Read(buffer, 0, buffer.Length);
                while (bytesread != 0)
                {
                    ms.Write(buffer, 0, bytesread);
                    bytesread = ds.Read(buffer, 0, buffer.Length);

                }
                retval = ms.GetBuffer();
            }
            else if (contentencoding.ToLower().Contains("gzip"))
            {
                System.IO.Compression.GZipStream gz = new System.IO.Compression.GZipStream(_clientPayload, System.IO.Compression.CompressionMode.Decompress);

                byte[] buffer = new byte[8192];
                MemoryStream ms = new MemoryStream();
                int bytesread = 0;
                try
                {
                    bytesread = gz.Read(buffer, 0, buffer.Length);
                }
                catch (Exception ex) { _upStreamExceptions.Add(ex); }
                while (bytesread != 0 & gz.CanRead)
                {
                    ms.Write(buffer, 0, bytesread);
                    try
                    {
                        bytesread = gz.Read(buffer, 0, buffer.Length);
                    }
                    catch (Exception ex) { _upStreamExceptions.Add(ex); break; }

                }
                retval = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(retval, 0, (int)ms.Length);
            }
            else
            {
                retval = new byte[_clientPayload.Length];
                _clientPayload.Position = 0;
                _clientPayload.Read(retval, 0, (int)_clientPayload.Length);
            }
            return retval;
        }
Exemple #49
0
        static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            if (args.Name.StartsWith("System.Data.SQLite", StringComparison.OrdinalIgnoreCase))
            {
                string rootDir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + Path.DirectorySeparatorChar + "GMap.NET" + Path.DirectorySeparatorChar;
                string dllDir  = rootDir + "DllCache" + Path.DirectorySeparatorChar;
                string dll     = dllDir + "SQLite_v84_NET" + Environment.Version.Major + "_" + (IntPtr.Size == 8 ? "x64" : "x86") + Path.DirectorySeparatorChar + "System.Data.SQLite.DLL";
                if (!File.Exists(dll))
                {
                    string dir = Path.GetDirectoryName(dll);
                    if (!Directory.Exists(dir))
                    {
                        Directory.CreateDirectory(dir);
                    }

                    Debug.WriteLine("Saving to DllCache: " + dll);

                    if (Environment.Version.Major == 2)
                    {
                        using (MemoryStream gzipDll = new MemoryStream((IntPtr.Size == 8 ? Properties.Resources.System_Data_SQLite_x64_NET2_dll : Properties.Resources.System_Data_SQLite_x86_NET2_dll)))
                        {
                            using (var gs = new System.IO.Compression.GZipStream(gzipDll, System.IO.Compression.CompressionMode.Decompress))
                            {
                                using (MemoryStream exctDll = new MemoryStream())
                                {
                                    byte[] tmp = new byte[1024 * 256];
                                    int    r   = 0;
                                    while ((r = gs.Read(tmp, 0, tmp.Length)) > 0)
                                    {
                                        exctDll.Write(tmp, 0, r);
                                    }
                                    File.WriteAllBytes(dll, exctDll.ToArray());
                                }
                            }
                        }
                    }
                    else if (Environment.Version.Major == 4)
                    {
                        using (MemoryStream gzipDll = new MemoryStream((IntPtr.Size == 8 ? Properties.Resources.System_Data_SQLite_x64_NET4_dll : Properties.Resources.System_Data_SQLite_x86_NET4_dll)))
                        {
                            using (var gs = new System.IO.Compression.GZipStream(gzipDll, System.IO.Compression.CompressionMode.Decompress))
                            {
                                using (MemoryStream exctDll = new MemoryStream())
                                {
                                    byte[] tmp = new byte[1024 * 256];
                                    int    r   = 0;
                                    while ((r = gs.Read(tmp, 0, tmp.Length)) > 0)
                                    {
                                        exctDll.Write(tmp, 0, r);
                                    }
                                    File.WriteAllBytes(dll, exctDll.ToArray());
                                }
                            }
                        }
                    }
                }

                Debug.WriteLine("Assembly.LoadFile: " + dll);

                return(System.Reflection.Assembly.LoadFile(dll));
            }
            return(null);
        }
        public void accept(string txtName)
        {
            textName = txtName;
            string type = Request.ContentType;
            int separator = type.IndexOf("/");
            string compressionFormat = type.Substring(separator+1);

            int len = txtName.Length;

            //compress
            byte[] stringToByte=new byte[len+1];
            int byteIndex=0;
            foreach(char c in txtName.ToCharArray())
            {
                stringToByte[byteIndex++] = (byte)c;
            }
            var bytes = Encoding.ASCII.GetBytes(txtName);

            System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
            System.IO.Compression.GZipStream gzipStream = new System.IO.Compression.GZipStream(memoryStream,System.IO.Compression.CompressionMode.Compress);

            gzipStream.Write(bytes,0,bytes.Length);
            gzipStream.Close();

            stringToByte = memoryStream.ToArray();

            System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(stringToByte.Length);
            foreach(byte b in stringToByte)
            {
                stringBuilder.Append((char)b);
            }
            memoryStream.Close();
            gzipStream.Dispose();
            memoryStream.Dispose();

            string s = stringBuilder.ToString();

            //Decompress
            byte[] decompressStream=new byte[s.Length];
            byteIndex=0;
            foreach(char c in s.ToCharArray())
            {
                decompressStream[byteIndex++]=(byte)c;
            }

            System.IO.MemoryStream ms = new System.IO.MemoryStream(decompressStream);
            System.IO.Compression.GZipStream gs = new System.IO.Compression.GZipStream(ms,System.IO.Compression.CompressionMode.Decompress);

            int byteRead = gs.Read(decompressStream,0,decompressStream.Length);

            System.Text.StringBuilder builder = new System.Text.StringBuilder(byteRead);
             foreach(byte b in decompressStream)
             {
                 builder.Append((char)b);
             }

             ms.Close();
             gs.Close();
             ms.Dispose();
             gs.Dispose();

             String str = builder.ToString();
             int a = 0;
        }
Exemple #51
0
        public static MemoryStream DecompressGzip(Stream thestream)
        {
            MemoryStream ms = new MemoryStream();
            using (System.IO.Compression.GZipStream gz = new System.IO.Compression.GZipStream(thestream, System.IO.Compression.CompressionMode.Decompress,true))
            {

            byte[] buffer = new byte[8192];

                int bytesread = 0;
                try
                {
                    bytesread = gz.Read(buffer, 0, buffer.Length);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                while (bytesread != 0 & gz.CanRead)
                {
                    ms.Write(buffer, 0, bytesread);
                    try
                    {
                        bytesread = gz.Read(buffer, 0, buffer.Length);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }

                }
                ms.Position = 0;
            }
            return ms;
        }
Exemple #52
0
        public static string DecompressGzip(Stream input, Encoding e)
        {
            using (System.IO.Compression.GZipStream decompressor = new System.IO.Compression.GZipStream(input, System.IO.Compression.CompressionMode.Decompress))
            {

                int read = 0;
                var buffer = new byte[BUFFER_SIZE];

                using (MemoryStream output = new MemoryStream())
                {
                    while ((read = decompressor.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        output.Write(buffer, 0, read);
                    }
                    return e.GetString(output.ToArray());
                }

            }
        }
      static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
      {
         if(args.Name.StartsWith("System.Data.SQLite", StringComparison.OrdinalIgnoreCase))
         {
            string rootDir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + Path.DirectorySeparatorChar + "GMap.NET" + Path.DirectorySeparatorChar;
            string dllDir = rootDir + "DllCache" + Path.DirectorySeparatorChar;
            string dll = dllDir + "SQLite_v84_NET" + Environment.Version.Major + "_" + (IntPtr.Size == 8 ? "x64" : "x86") + Path.DirectorySeparatorChar + "System.Data.SQLite.DLL";
            if(!File.Exists(dll))
            {
               string dir = Path.GetDirectoryName(dll);
               if(!Directory.Exists(dir))
               {
                  Directory.CreateDirectory(dir);
               }

               Debug.WriteLine("Saving to DllCache: " + dll);

               if(Environment.Version.Major == 2)
               {
                  using(MemoryStream gzipDll = new MemoryStream((IntPtr.Size == 8 ? Properties.Resources.System_Data_SQLite_x64_NET2_dll : Properties.Resources.System_Data_SQLite_x86_NET2_dll)))
                  {
                     using(var gs = new System.IO.Compression.GZipStream(gzipDll, System.IO.Compression.CompressionMode.Decompress))
                     {
                        using(MemoryStream exctDll = new MemoryStream())
                        {
                           byte[] tmp = new byte[1024 * 256];
                           int r = 0;
                           while((r = gs.Read(tmp, 0, tmp.Length)) > 0)
                           {
                              exctDll.Write(tmp, 0, r);
                           }
                           File.WriteAllBytes(dll, exctDll.ToArray());
                        }
                     }
                  }
               }
               else if(Environment.Version.Major == 4)
               {
                  using(MemoryStream gzipDll = new MemoryStream((IntPtr.Size == 8 ? Properties.Resources.System_Data_SQLite_x64_NET4_dll : Properties.Resources.System_Data_SQLite_x86_NET4_dll)))
                  {
                     using(var gs = new System.IO.Compression.GZipStream(gzipDll, System.IO.Compression.CompressionMode.Decompress))
                     {
                        using(MemoryStream exctDll = new MemoryStream())
                        {
                           byte[] tmp = new byte[1024 * 256];
                           int r = 0;
                           while((r = gs.Read(tmp, 0, tmp.Length)) > 0)
                           {
                              exctDll.Write(tmp, 0, r);
                           }
                           File.WriteAllBytes(dll, exctDll.ToArray());
                        }
                     }
                  }
               }
            }

            Debug.WriteLine("Assembly.LoadFile: " + dll);

            return System.Reflection.Assembly.LoadFile(dll);
         }
         return null;
      }
Exemple #54
0
        private MemoryStream UncompressWmz(MemoryStream input)
        {
            MemoryStream wmfStream;

            input.Position = 0;

            if (input.ReadByte() == 0x1f && input.ReadByte() == 0x8b)
            {
                input.Position = 0;

                wmfStream = new MemoryStream();
                var buffer = new byte[1024];
                var compressedFile = new System.IO.Compression.GZipStream(input, System.IO.Compression.CompressionMode.Decompress, true);
                int bytesRead;

                while ((bytesRead = compressedFile.Read(buffer, 0, buffer.Length)) > 0)
                {
                    wmfStream.Write(buffer, 0, bytesRead);
                }
            }
            else
            {
                wmfStream = input;
            }

            wmfStream.Position = 0;

            return wmfStream;
        }
Exemple #55
0
        static byte[] UnGzip(byte[] buffer)
        {
            if (buffer[0] == 31 && buffer[1] == 139)
            {
                MemoryStream msIn = new MemoryStream(buffer);
                MemoryStream msOut = new MemoryStream();
                System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream(msIn, System.IO.Compression.CompressionMode.Decompress);

                byte[] data = new byte[2048];

                while (true)
                {
                    int count = gzip.Read(data, 0, 2048);
                    msOut.Write(data, 0, count);

                    if (count < 2048)
                    {
                        break;
                    }
                }
                gzip.Close();
                msOut.Close();
                return msOut.ToArray();

            }
            return buffer;
        }
Exemple #56
0
        public static string UnGZIP(ref byte[] input)
        {
            System.IO.MemoryStream oMemoryStream = null;
            System.IO.Compression.GZipStream oGZipStream = null;
            int iLength = 0;
            byte[] byteArray = new byte[100001];
            System.Text.StringBuilder oStringBuilder = new System.Text.StringBuilder();

            oMemoryStream = new System.IO.MemoryStream(input);
            oGZipStream = new System.IO.Compression.GZipStream(oMemoryStream, System.IO.Compression.CompressionMode.Decompress);
            oMemoryStream.Flush();
            oGZipStream.Flush();
            do
            {
                iLength = oGZipStream.Read(byteArray, 0, byteArray.Length);
                if (iLength < 1)
                    break; // TODO: might not be correct. Was : Exit Do
                oStringBuilder.Append(System.Text.Encoding.UTF8.GetString(byteArray, 0, iLength));
            } while (true);
            oGZipStream.Close();
            oMemoryStream.Close();
            oGZipStream.Dispose();
            oMemoryStream.Dispose();
            return oStringBuilder.ToString();
        }
        public void Read(string filename)
        {
            //展開する書庫のFileStreamを作成する
            System.IO.FileStream gzipFileStrm = new System.IO.FileStream(
                filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            //圧縮解除モードのGZipStreamを作成する
            System.IO.Compression.GZipStream gzipStrm =
                new System.IO.Compression.GZipStream(gzipFileStrm,
                    System.IO.Compression.CompressionMode.Decompress);

            //string temp = Path.GetTempFileName();

            //展開先のファイルのFileStreamを作成する
            //System.IO.FileStream outFileStrm = new System.IO.FileStream(
            //    temp, System.IO.FileMode.Create, System.IO.FileAccess.Write);

            System.IO.MemoryStream outFileStrm = new MemoryStream();


            byte[] buffer = new byte[10240];
            while (true)
            {
                //書庫から展開されたデータを読み込む
                int readSize = gzipStrm.Read(buffer, 0, buffer.Length);
                //最後まで読み込んだ時は、ループを抜ける
                if (readSize == 0)
                    break;
                //展開先のファイルに書き込む
                outFileStrm.Write(buffer, 0, readSize);
            }
            //閉じる
            //outFileStrm.Close();
            gzipStrm.Close();

            ds.Clear();
            outFileStrm.Position = 0;
            ds.ReadXml(outFileStrm);
        }
        private void Decompress()
        {
            if (this._Compressed.Length == 0)
            {
                this._UnCompressed = string.Empty;
                return;
            }

            string Result = string.Empty;

            try
            {
                byte[] ZippedData = null;

                //Convert the compressed string into a byte array and decrypt the array if required
                if (this._Passphrase.Length > 0)
                {
                    ZippedData = Decrypt(System.Convert.FromBase64String(this._Compressed));
                }
                else
                {
                    ZippedData = System.Convert.FromBase64String(this._Compressed);
                }

                //Decompress the byte array
                System.IO.MemoryStream objMemStream = new System.IO.MemoryStream(ZippedData);
                System.IO.Compression.GZipStream objGZipStream = new System.IO.Compression.GZipStream(objMemStream, System.IO.Compression.CompressionMode.Decompress);
                byte[] sizeBytes = new byte[4];

                objMemStream.Position = objMemStream.Length - 4;
                objMemStream.Read(sizeBytes, 0, 4);

                int iOutputSize = BitConverter.ToInt32(sizeBytes, 0);

                objMemStream.Position = 0;

                byte[] UnZippedData = new byte[iOutputSize];

                objGZipStream.Read(UnZippedData, 0, iOutputSize);

                objGZipStream.Dispose();
                objMemStream.Dispose();

                //Convert the decompressed byte array back to a string
                Result = this._TextEncoding.GetString(UnZippedData);

            }
            catch (Exception)
            {
            }
            finally
            {
                this._UnCompressed = Result;
            }
        }
Exemple #59
0
        public static List<NOcrChar> LoadNOcrForTesseract(string xmlRessourceName)
        {
            var nocrChars = new List<NOcrChar>();
            Assembly asm = Assembly.GetExecutingAssembly();
            Stream strm = asm.GetManifestResourceStream(xmlRessourceName);
            if (strm != null)
            {
                XmlDocument doc = new XmlDocument();
                var rdr = new StreamReader(strm);
                using (var zip = new System.IO.Compression.GZipStream(rdr.BaseStream, System.IO.Compression.CompressionMode.Decompress))
                {
                    byte[] data = new byte[175000];
                    zip.Read(data, 0, 175000);
                    doc.LoadXml(Encoding.UTF8.GetString(data));
                }
                rdr.Close();

                try
                {
                    foreach (XmlNode node in doc.DocumentElement.SelectNodes("Char"))
                    {
                        var oc = new NOcrChar(node.Attributes["Text"].Value);
                        oc.Width = Convert.ToInt32(node.Attributes["Width"].Value, CultureInfo.InvariantCulture);
                        oc.Height = Convert.ToInt32(node.Attributes["Height"].Value, CultureInfo.InvariantCulture);
                        oc.MarginTop = Convert.ToInt32(node.Attributes["MarginTop"].Value, CultureInfo.InvariantCulture);
                        if (node.Attributes["Italic"] != null)
                            oc.Italic = Convert.ToBoolean(node.Attributes["Italic"].Value, CultureInfo.InvariantCulture);
                        if (node.Attributes["ExpandCount"] != null)
                            oc.ExpandCount = Convert.ToInt32(node.Attributes["ExpandCount"].Value, CultureInfo.InvariantCulture);
                        foreach (XmlNode pointNode in node.SelectNodes("Point"))
                        {
                            var op = new NOcrPoint(DecodePoint(pointNode.Attributes["Start"].Value), DecodePoint(pointNode.Attributes["End"].Value));
                            XmlAttribute a = pointNode.Attributes["On"];
                            if (a != null && Convert.ToBoolean(a.Value))
                                oc.LinesForeground.Add(op);
                            else
                                oc.LinesBackground.Add(op);
                        }
                        nocrChars.Add(oc);
                    }
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message);
                }
            }
            return nocrChars;
        }
		static void UnZipFile(string file)
		{
			var target = file.Substring(0, file.LastIndexOf("."));
			using (var fs = System.IO.File.OpenRead(file))
			using (var gz = new System.IO.Compression.GZipStream(fs, System.IO.Compression.CompressionMode.Decompress))
			using (var ts = System.IO.File.OpenWrite(target))
			{
				var buffer = new byte[0x400];
				var count = 0;
				while ((count = gz.Read(buffer, 0, buffer.Length)) > 0)
				{
					ts.Write(buffer, 0, count);
				}
			}
		}