利用輸入流和輸出流進行文字的讀出和寫入,注意:壓縮檔案時會用到物件流(objectoutputstream寫入檔案),解壓檔案時,也會用到物件流(objectinputstream,讀出檔案)
//壓縮檔案
public void zipfile(string srcfile, string dstfile) catch (exception e) finally catch (ioexception e)
} }
//解壓檔案
public void dezip(string srcfile, string dstfile ) catch (exception e) finally catch (exception e)
} }
注:
2、哈夫曼編碼是按照位元組進行編碼的,適用於所有檔案。
3、對於內容重複不明顯的文字,壓縮效果不明顯。
哈夫曼編碼實現文字壓縮
由哈夫曼樹的定義可知,初始森林中共有n棵只含有根結點的二叉樹,將當前森林中的兩棵根結點權值最小的二叉樹合併成一棵新的二叉樹 每合併一次,森林中就減少一棵樹,產生乙個新結點。顯然要進行n 1次合併,所以共產生n 1個新結點,它們都是具有兩個孩子的分支結點。由此可知,最終求得的哈夫曼樹中一共有2n 1個...
利用哈夫曼樹實現檔案壓縮和解壓縮
利用庫中的優先順序佇列實現哈夫曼樹,最後基於哈夫曼樹最終實現檔案壓縮。描述 1.統計檔案中字元出現的次數,利用優先順序佇列構建haffman樹,生成huffman編碼。構造過程可以使用priority queue輔助,每次pq.top 都可以取出權值 頻數 最小的節點。每取出兩個最小權值的節點,就n...
哈夫曼樹壓縮 解壓縮檔案
tips 注意二進位制讀寫檔案回車為 r n 詳細分析改天再填坑。還有單純形演算法 github include include include include include include include using namespace std template struct huffnode ...