资源简介
使用哈夫曼编码实现对文本文件的压缩和解压缩
代码片段和文件信息
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 < set.size() && it.hasNext(); 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个文件信息
评论
共有 条评论