资源中有完整的哈夫曼压缩&解压的算法java实现,并且包括两个运行实例。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-09 20:58 __MACOSX
目录 0 2017-12-09 20:58 __MACOSX哈夫曼压缩&解压源码及样例
文件 120 2017-12-09 20:57 __MACOSX哈夫曼压缩&解压源码及样例._.DS_Store
目录 0 2017-12-09 20:58 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables
文件 120 2017-11-23 16:43 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._.DS_Store
文件 709 2017-11-15 10:53 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._Aesop_Fables.txt
文件 176 2017-11-23 16:42 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._Sort.txt
文件 176 2017-11-23 16:42 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._code.txt
文件 176 2017-11-23 16:43 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._decode.txt
目录 0 2017-12-09 20:58 __MACOSX哈夫曼压缩&解压源码及样例graph
文件 120 2017-11-23 17:05 __MACOSX哈夫曼压缩&解压源码及样例graph._.DS_Store
文件 176 2017-11-23 16:45 __MACOSX哈夫曼压缩&解压源码及样例graph._Sort.txt
文件 176 2017-11-23 16:45 __MACOSX哈夫曼压缩&解压源码及样例graph._code.txt
文件 176 2017-11-23 17:05 __MACOSX哈夫曼压缩&解压源码及样例graph._decode.txt
文件 176 2017-11-23 17:02 __MACOSX哈夫曼压缩&解压源码及样例graph._encode.txt
文件 619 2017-11-15 10:53 __MACOSX哈夫曼压缩&解压源码及样例graph._graph.txt
目录 0 2017-12-09 20:57 哈夫曼压缩&解压源码及样例
文件 10244 2017-12-09 20:57 哈夫曼压缩&解压源码及样例.DS_Store
目录 0 2017-11-23 16:44 哈夫曼压缩&解压源码及样例Aesop_Fables
文件 6148 2017-11-23 16:43 哈夫曼压缩&解压源码及样例Aesop_Fables.DS_Store
文件 190066 2017-11-15 10:53 哈夫曼压缩&解压源码及样例Aesop_FablesAesop_Fables.txt
文件 535 2017-11-23 16:42 哈夫曼压缩&解压源码及样例Aesop_FablesSort.txt
文件 1003 2017-11-23 16:42 哈夫曼压缩&解压源码及样例Aesop_Fablescode.txt
文件 190066 2017-11-23 16:43 哈夫曼压缩&解压源码及样例Aesop_Fablesdecode.txt
文件 108373 2017-11-23 16:42 哈夫曼压缩&解压源码及样例Aesop_Fablesencode.txt
目录 0 2017-11-23 17:05 哈夫曼压缩&解压源码及样例graph
文件 6148 2017-11-23 17:05 哈夫曼压缩&解压源码及样例graph.DS_Store
文件 272 2017-11-23 16:45 哈夫曼压缩&解压源码及样例graphSort.txt
文件 513 2017-11-23 16:45 哈夫曼压缩&解压源码及样例graphcode.txt
文件 2094720 2017-11-23 17:05 哈夫曼压缩&解压源码及样例graphdecode.txt
文件 930330 2017-11-23 17:02 哈夫曼压缩&解压源码及样例graphencode.txt
............此处省略6个文件信息
package huffman;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Compress {
/* 字符串转int*/
public static int changeStringToInt(String s){
int v1 = (s.charAt(0) - 48)*128;
int v2 = (s.charAt(1) - 48)*64;
int v3 = (s.charAt(2) - 48)*32;
int v4 = (s.charAt(3) - 48)*16;
int v5 = (s.charAt(4) - 48)*8;
int v6 = (s.charAt(5) - 48)*4;
int v7 = (s.charAt(6) - 48)*2;
int v8 = (s.charAt(7) - 48)*1;
return v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8;
}
/* 按字符出现的频率降序排序*/
public static List> Sort(Map map)
{
List> list_Data = new ArrayList> (map.entrySet());
Collections.sort(list_Data new Comparator>()
{
public int compare(Map.Entry o1 Map.Entry o2)
{
if(o2.getValue() != null && o1.getValue() != null && o2.getValue().compareTo(o1.getValue()) > 0){
return -1;
}else{
return 1;
}
}
});
return list_Data;
}
/* 统计字符频率*/
public static Map Statistic(StringBuffer s)
{
Map map = new HashMap();
for(int i = 0; i < s.length(); i++)
{
String perStr = s.substring(i i+1);
if(map.containsKey(perStr)){
Integer num = map.get(perStr);
map.put(perStr num + 1);
}else{
map.put(perStr 1);
}
}
return map;
}
/* 压缩文件*/
public static void CompressFile(String rfileString wfile String codefile String charFrequency)
{
StringBuffer s = new StringBuffer();
BufferedReader br;
try {
br = new BufferedReader(new FileReader(rfile));
int ss = -1;
try {
while(-1 != (ss = br.read())){
s.append((char)ss);
}
br.close();
Map map=Statistic(s);
/* 按字符出现的频率降序排序*/
List> data = Sort(map);
/*构建哈夫曼树,获取不同字符的编码*/
Huffman haffman=new Huffman();
Map result = haffman.GetCode(data);
/*对源文件字符进行编码转换*/
StringBuffer charcode = new StringBuffer();
for(int i = 0; i < s.length(); i++)
{
String perStr = s.substring(i i+1);
charcode.append(result.get(perStr));
}
File f = new File(codefile);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-09 20:58 __MACOSX
目录 0 2017-12-09 20:58 __MACOSX哈夫曼压缩&解压源码及样例
文件 120 2017-12-09 20:57 __MACOSX哈夫曼压缩&解压源码及样例._.DS_Store
目录 0 2017-12-09 20:58 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables
文件 120 2017-11-23 16:43 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._.DS_Store
文件 709 2017-11-15 10:53 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._Aesop_Fables.txt
文件 176 2017-11-23 16:42 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._Sort.txt
文件 176 2017-11-23 16:42 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._code.txt
文件 176 2017-11-23 16:43 __MACOSX哈夫曼压缩&解压源码及样例Aesop_Fables._decode.txt
目录 0 2017-12-09 20:58 __MACOSX哈夫曼压缩&解压源码及样例graph
文件 120 2017-11-23 17:05 __MACOSX哈夫曼压缩&解压源码及样例graph._.DS_Store
文件 176 2017-11-23 16:45 __MACOSX哈夫曼压缩&解压源码及样例graph._Sort.txt
文件 176 2017-11-23 16:45 __MACOSX哈夫曼压缩&解压源码及样例graph._code.txt
文件 176 2017-11-23 17:05 __MACOSX哈夫曼压缩&解压源码及样例graph._decode.txt
文件 176 2017-11-23 17:02 __MACOSX哈夫曼压缩&解压源码及样例graph._encode.txt
文件 619 2017-11-15 10:53 __MACOSX哈夫曼压缩&解压源码及样例graph._graph.txt
目录 0 2017-12-09 20:57 哈夫曼压缩&解压源码及样例
文件 10244 2017-12-09 20:57 哈夫曼压缩&解压源码及样例.DS_Store
目录 0 2017-11-23 16:44 哈夫曼压缩&解压源码及样例Aesop_Fables
文件 6148 2017-11-23 16:43 哈夫曼压缩&解压源码及样例Aesop_Fables.DS_Store
文件 190066 2017-11-15 10:53 哈夫曼压缩&解压源码及样例Aesop_FablesAesop_Fables.txt
文件 535 2017-11-23 16:42 哈夫曼压缩&解压源码及样例Aesop_FablesSort.txt
文件 1003 2017-11-23 16:42 哈夫曼压缩&解压源码及样例Aesop_Fablescode.txt
文件 190066 2017-11-23 16:43 哈夫曼压缩&解压源码及样例Aesop_Fablesdecode.txt
文件 108373 2017-11-23 16:42 哈夫曼压缩&解压源码及样例Aesop_Fablesencode.txt
目录 0 2017-11-23 17:05 哈夫曼压缩&解压源码及样例graph
文件 6148 2017-11-23 17:05 哈夫曼压缩&解压源码及样例graph.DS_Store
文件 272 2017-11-23 16:45 哈夫曼压缩&解压源码及样例graphSort.txt
文件 513 2017-11-23 16:45 哈夫曼压缩&解压源码及样例graphcode.txt
文件 2094720 2017-11-23 17:05 哈夫曼压缩&解压源码及样例graphdecode.txt
文件 930330 2017-11-23 17:02 哈夫曼压缩&解压源码及样例graphencode.txt
............此处省略6个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)