資源簡介
使用哈夫曼編碼實現對文本文件的壓縮和解壓縮

代碼片段和文件信息
import?java.io.BufferedReader;
import?java.io.DataInputStream;
import?java.io.FileInputStream;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.io.FileReader;
import?java.io.FileWriter;
import?java.io.IOException;
import?java.util.Arrays;
import?java.util.HashMap;
import?java.util.HashSet;
import?java.util.Iterator;
import?java.util.Map;
import?java.util.Set;
public?class?TestHuffman?{
public?static?void?main(String[]?args)?{
Map?charAndWeightMap?=?new?HashMap();
try?{
FileReader?fr?=?new?FileReader(“test/assign03_05/input_assign03_05.txt“);
BufferedReader?br?=?new?BufferedReader(fr);
getCharAndWeightMap(br?charAndWeightMap);//?從文件中統計個字符的概率
}?catch?(FileNotFoundException?e)?{
e.printStackTrace();
}
//?System.out.println(“charAndWeightMap:?“?+?charAndWeightMap);
Node[]?nodes?=?new?Node[charAndWeightMap.size()];
mapToNodes(charAndWeightMap?nodes);
Node?root?=?new?Node();
root?=?huffmanTree(nodes?nodes.length);
Map?map?=?new?HashMap();
BinTreeToHuffman(root?map);//?由二叉樹生成huffman編碼保存得到map中.
//?System.out.println(“huffmancode:?“+map);
try?{
FileWriter?fw?=?new?FileWriter(“test/assign03_05/huffman_assign03_05.txt“);
//?fw.write(“huffman.txt“);
writerHuffmanMap(map?fw);//?將huffman編碼保存到文件huffman.txt中
}?catch?(IOException?e)?{
e.printStackTrace();
}
try?{
FileReader?fr?=?new?FileReader(“test/assign03_05/input_assign03_05.txt“);
BufferedReader?br?=?new?BufferedReader(fr);
//DataInputStream?dis?=?new?DataInputStream(new?FileInputStream(“test1/input.txt“));
FileOutputStream?fos?=?new?FileOutputStream(“test/assign03_05/compressfile_assign03_05.txt“);
compressFile(map?br?fos);
}?catch?(FileNotFoundException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
try?{
decompressFile(new?BufferedReader(
new?FileReader(“test/assign03_05/huffman_assign03_05.txt“))?new?FileInputStream(
“test/assign03_05/compressFile_assign03_05.txt“)?new?FileWriter(“test/assign03_05/decompressfile_assign03_05.txt“));
}?catch?(FileNotFoundException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
public?static?void?mapToNodes(Map?charAndWeightMap
Node[]?nodes)?{
//?int?i?=?0;
//?Character?ch?=?null;
Set?set?=?new?HashSet();
set?=?charAndWeightMap.keySet();
//?System.out.println(“set.size():?“+set.size());
//?System.out.println(“nodes.length:?“+nodes.length);
//?System.out.println(set);
Iterator?it?=?set.iterator();
for?(int?i?=?0;?i? nodes[i]?=?new?Node(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????301??2012-04-10?11:29??Huffman\.classpath
?????文件????????386??2012-04-10?11:29??Huffman\.project
?????文件????????629??2012-04-10?11:29??Huffman\.settings\org.eclipse.jdt.core.prefs
?????文件????????861??2012-04-10?13:52??Huffman\bin\Node.class
?????文件???????9301??2012-04-10?13:52??Huffman\bin\TestHuffman.class
?????文件??????12430??2012-04-10?13:52??Huffman\src\TestHuffman.java
?????文件?????????29??2012-04-10?13:21??Huffman\test\assign03_01\compressfile_assign03_01.txt
?????文件????????100??2012-04-10?13:21??Huffman\test\assign03_01\decompressfile_assign03_01.txt
?????文件?????????52??2012-04-10?13:21??Huffman\test\assign03_01\huffman_assign03_01.txt
?????文件????????100??2012-04-10?13:03??Huffman\test\assign03_01\input_assign03_01.txt
?????文件????????927??2012-04-10?13:26??Huffman\test\assign03_02\compressfile_assign03_02.txt
?????文件???????1453??2012-04-10?13:26??Huffman\test\assign03_02\decompressfile_assign03_02.txt
?????文件????????794??2012-04-10?13:26??Huffman\test\assign03_02\huffman_assign03_02.txt
?????文件???????1524??2012-04-10?11:29??Huffman\test\assign03_02\input_assign03_02.txt
?????文件???????2120??2012-04-10?13:34??Huffman\test\assign03_03\compressfile_assign03_03.txt
?????文件???????4188??2012-04-10?13:34??Huffman\test\assign03_03\decompressfile_assign03_03.txt
?????文件???????6829??2012-04-10?13:34??Huffman\test\assign03_03\huffman_assign03_03.txt
?????文件???????4222??2012-04-10?12:53??Huffman\test\assign03_03\input_assign03_03.txt
?????文件????????911??2012-04-10?13:42??Huffman\test\assign03_04\compressfile_assign03_04.txt
?????文件???????1602??2012-04-10?13:42??Huffman\test\assign03_04\decompressfile_assign03_04.txt
?????文件???????2338??2012-04-10?13:42??Huffman\test\assign03_04\huffman_assign03_04.txt
?????文件???????1620??2012-04-10?13:42??Huffman\test\assign03_04\input_assign03_04.txt
?????文件???????1604??2012-04-10?13:55??Huffman\test\assign03_05\compressfile_assign03_05.txt
?????文件???????3224??2012-04-10?13:55??Huffman\test\assign03_05\decompressfile_assign03_05.txt
?????文件???????7302??2012-04-10?13:55??Huffman\test\assign03_05\huffman_assign03_05.txt
?????文件???????3263??2012-04-10?13:55??Huffman\test\assign03_05\input_assign03_05.txt
?????目錄??????????0??2012-04-10?13:20??Huffman\test\assign03_01
?????目錄??????????0??2012-04-10?13:24??Huffman\test\assign03_02
?????目錄??????????0??2012-04-10?13:33??Huffman\test\assign03_03
?????目錄??????????0??2012-04-10?13:43??Huffman\test\assign03_04
............此處省略9個文件信息
評論
共有 條評論