资源简介
利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,
这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信
息收发站写一个哈夫曼码的编/译码系统。

代码片段和文件信息
/*
* @(#)BtnActionListener.java 2008-12-28
*
* Copyright STF
*/
package edu.cqit.haffman;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* 按钮监听器
*
* @author StarFineJade
*
*/
class BtnActionListener implements ActionListener {
JFileChooser fileChooser = new JFileChooser(“.“);
public BtnActionListener() {
fileChooser.setMultiSelectionEnabled(false);
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter(
“DATA file(*.txt *.dat)“ “txt“ “dat“));
}
String read(File e) throws Exception {
BufferedReader br = new BufferedReader(new FileReader(e));
StringBuffer buf = new StringBuffer();
while (br.ready()) {
String s = br.readLine();
buf.append(s);
}
br.close();
return buf.toString();
}
void write(String outStr File out) throws Exception {
BufferedWriter bw = new BufferedWriter(new FileWriter(out));
bw.write(outStr);
bw.close();
}
/*
* (non-Javadoc)
*
* @see
* java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(“encode“)) { // 编码
String inStr = EnDecoder.ui.textTa.getText();
if (““.equals(inStr)) {
try {
int returnValue = fileChooser.showOpenDialog(EnDecoder.frame);
if (returnValue == JFileChooser.CANCEL_OPTION) {
File in = fileChooser.getSelectedFile();
inStr = read(in);
EnDecoder.ui.textTa.setText(inStr);
} else {
return;
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
String outStr = EnDecoder.haffman.encode(inStr);
EnDecoder.ui.codeTa.setText(outStr);
File out = new File(“codeFile.dat“);
try {
write(outStr out);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (e.getActionCommand().equals(“decode“)) { // 解码
String inStr = EnDecoder.ui.codeTa.getText();
if (““.equals(inStr)) {
try {
int returnValue = fileChooser.showOpenDialog(EnDecoder.frame);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File in = fileChooser.getSelectedFile();
inStr = read(in);
EnDecoder.ui.codeTa.setText(inStr);
} else {
return;
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
String outStr = EnDecoder.haffman.decode(inStr);
File out = new File(“textFile.dat“);
EnDecoder.ui.textTa.setText(outStr);
try {
write(outStr out);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.p
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 211 2009-01-08 12:19 哈夫曼 编译码器\codeFile.dat
文件 145 2009-01-08 12:17 哈夫曼 编译码器\frequency.dat
文件 16563 2009-01-08 13:22 哈夫曼 编译码器\haffman.jar
文件 356 2009-01-08 13:29 哈夫曼 编译码器\hfmtree.dat
文件 4096 2009-01-08 13:19 哈夫曼 编译码器\src\edu\cqit\huffman\BtnActionListener.java
文件 910 2009-01-01 12:27 哈夫曼 编译码器\src\edu\cqit\huffman\Code.java
文件 2187 2009-01-01 13:47 哈夫曼 编译码器\src\edu\cqit\huffman\EnDecoder.java
文件 939 2009-01-01 12:22 哈夫曼 编译码器\src\edu\cqit\huffman\Frequency.java
文件 6069 2009-01-08 12:10 哈夫曼 编译码器\src\edu\cqit\huffman\Haffman.java
文件 3896 2009-01-01 12:49 哈夫曼 编译码器\src\edu\cqit\huffman\UI.java
文件 2823 2008-12-31 11:15 哈夫曼 编译码器\src\edu\cqit\ParkSimulation\li
文件 2007 2008-12-28 00:20 哈夫曼 编译码器\src\edu\cqit\ParkSimulation\Node.java
文件 1802 2008-12-21 20:43 哈夫曼 编译码器\src\edu\cqit\ParkSimulation\Queue.java
文件 41 2009-01-08 12:18 哈夫曼 编译码器\textFile.dat
文件 1206 2009-01-08 12:19 哈夫曼 编译码器\treeprint.dat
目录 0 2009-01-08 13:35 哈夫曼 编译码器\src\edu\cqit\huffman
目录 0 2009-01-08 13:35 哈夫曼 编译码器\src\edu\cqit\ParkSimulation
目录 0 2009-01-08 13:35 哈夫曼 编译码器\src\edu\cqit
目录 0 2009-01-08 13:35 哈夫曼 编译码器\src\edu
目录 0 2009-01-08 13:35 哈夫曼 编译码器\src
目录 0 2009-01-08 13:35 哈夫曼 编译码器
----------- --------- ---------- ----- ----
43251 21
- 上一篇:maven项目:neo4j
- 下一篇:java commons lang3-3.2
相关资源
- java图状数据结构转换为树状数据结构
- java算法大全含源码包
- 山东大学数据结构课程设计
- [数据结构Java版第4版][叶核亚][习题解
- 全世界最经典的数据结构教材,Horo
- 数据结构与算法分析Java语言描述-英文
- 数据结构与算法:C#语言描述(中,英
- 数据结构—Java语言描述朱战立版课件
- 数据结构与算法分析_java语言描述_M
- 数据结构课程设计 哈弗曼编码译码器
- 数据结构与算法分析JAVA英文第三版
- 数据结构与算法分析(Java版).pdf
- 图解数据结构使用Java.zip
- 数据结构与算法(java语言)邓俊辉
- 数据结构与算法Java描述 习题答案
- 免费高清 java数据结构和算法第二版编
- Java Design Demo -简单的队列
- 数据结构与算法分析Java描述习题答案
- 数据结构与算法java中文版
- 东北大学数据结构与算法课程设计实
- 2018-2019学年东北大学数据结构实验报
- 武汉大学 数据结构课件
- 算法与数据结构之LeetCode题目详解PD
- 学生成绩管理系统网站数据结构课程
- 数据结构java版 刘小晶
- 数据结构与算法Java 描述 - 邓俊辉 -
- 数据结构与算法分析——java语言描述
- JAVA语言程序设计与数据结构答案
- 数据结构java版练习试卷及答案
- Data Structure and Algorithm Analysis in Java
评论
共有 条评论