Ejemplo n.º 1
0
 /// <summary>
 /// 对文件进解压
 /// </summary>
 /// <param name="inPutFileName">输入流:需要解压的文件</param>
 /// <param name="outputFileName">输出流:解压状态</param>
 public static void UnFileZip(string inPutFileName, string outputFileName)
 {
     try
     {
         using (Stream file = new FileStream(inPutFileName, FileMode.Open, FileAccess.Read))
         {
             BinaryFormatter binaryFormatter = new BinaryFormatter();
             //反序列为对应类型输出
             var   sbytes = (sbyte[])binaryFormatter.Deserialize(file);
             var   list   = (Dictionary <Byte, string>)binaryFormatter.Deserialize(file);
             Unzip unzip  = new Unzip();
             var   cur    = unzip.UnzIpBytes(list, sbytes);
             using (Stream output = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
             {
                 using (StreamWriter writer = new StreamWriter(output))
                 {
                     writer.Write(cur);
                 }
             }
         }
     }
     catch (ArgumentNullException e)
     {
         Console.WriteLine(e.Message);
     }
     catch (SerializationException ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            //i like like like java do you like a java
            string str = "as";

            //获取字符出现频率统计表
            Byte[] source = Encoding.UTF8.GetBytes(str);
            //重要的源数据
            Console.WriteLine("原始长度:" + str.Length);
            CreatedHuffmanData huffmanCode = new CreatedHuffmanData();

            //进行压缩,压缩数据存放在_huffmanData中
            huffmanCode.CreHuffmanData(source);
            // for (int i = 0; i < huffmanCode.HuffmanData.Length; i++)
            // {
            //     Console.WriteLine(huffmanCode.HuffmanData[i]);
            // }
            Console.WriteLine("解压");
            Unzip unzip = new Unzip();
            var   zip   = unzip.UnzIpBytes(huffmanCode.GetHuffmanCodeMap(), huffmanCode.HuffmanData);

            Console.WriteLine(zip);
            //FileZip("D:\\数据结构与算法\\树\\huffmanCode\\baseCode.txt","D:\\数据结构与算法\\树\\huffmanCode\\base.zip");
            UnFileZip("D:\\数据结构与算法\\树\\huffmanCode\\base.zip",
                      "D:\\数据结构与算法\\树\\huffmanCode\\bases.txt");
        }