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"); }
/// <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); } }
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); }