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