• 大小: 35KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: Java
  • 标签:

资源简介

使用哈夫曼编码实现对文本文件的压缩和解压缩

资源截图

代码片段和文件信息

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个文件信息

评论

共有 条评论