예제 #1
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");
        }
예제 #2
0
 /// <summary>
 /// 对文件进行压缩
 /// </summary>
 /// <param name="inPutFileName">输入流:此文件需要被压缩</param>
 /// <param name="outputFileName">输出流:输出一个.zip压缩文件</param>
 public static void FileZip(string inPutFileName, string outputFileName)
 {
     try
     {
         using (Stream file = new FileStream(inPutFileName, FileMode.Open, FileAccess.Read))
         {
             using (BinaryReader bin = new BinaryReader(file, Encoding.UTF8))
             {
                 var bytes = bin.ReadBytes((int)file.Length);
                 //根据文件的字节数组压缩文件
                 CreatedHuffmanData cre = new CreatedHuffmanData();
                 cre.CreHuffmanData(bytes);
                 BinaryFormatter binaryFormatter = new BinaryFormatter();
                 using (Stream output = new FileStream(outputFileName, FileMode.Create, FileAccess.Write))
                 {
                     //将关键的经过哈夫曼编码后的字节文件,序列化写入到输出流中
                     binaryFormatter.Serialize(output, cre.HuffmanData);
                     //将关键的经过哈夫曼编码表写入到输出流中
                     binaryFormatter.Serialize(output, cre.GetHuffmanCodeMap());
                 }
             }
         }
     }
     catch (ArgumentNullException e)
     {
         Console.WriteLine(e.Message);
     }
     catch (SerializationException ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
예제 #3
0
파일: Program.cs 프로젝트: 1316279031/DSAA
        public static void Main(string[] args)
        {
            string str = "i like like like java do you like a java";

            // string str = "aaa";
            //重要的源数据
            Console.WriteLine("原始长度:" + str.Length);
            CreatedHuffmanData huffmanCode = new CreatedHuffmanData();

            huffmanCode.CreHuffmanData(str);
            for (int i = 0; i < huffmanCode.HuffmanData.Length; i++)
            {
                Console.WriteLine(huffmanCode.HuffmanData[i]);
            }

            Console.WriteLine("解压");
            Unzip unzip = new Unzip();
            var   zip   = unzip.Bytes(huffmanCode.GetHuffmanCodeMap(), huffmanCode.HuffmanData);

            Console.WriteLine(zip);
        }