资源简介
利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,
这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信
息收发站写一个哈夫曼码的编/译码系统。
代码片段和文件信息
/*
* @(#)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数据结构排序动态演示
- R树的Java实现 可直接在eclipse下运行
- Java版数据结构与算法视频教程(44集
- 数据结构Java联系人通讯率
- Java语言程序设计与数据结构基础篇第
- JAVA数据结构复杂表达式求值
- Java版数据结构与算法视频教程(20集
- java数据结构视频教程共20集
- java数据结构校园导游咨询系统
- 全国交通咨询系统数据结构课设 图的
- 基于java数据结构链表写的猴子选大王
- 数据结构(JAVA)\\[数据结构Java版第
- json数据结构比对工具
- Java数据结构算法面试题
- java数据结构之家族亲属关系查询系统
- C#、C++、HTML5、JAVA、Python、数据结构与
- java语言实现的二叉树的各种操作(包
- Java数据结构和算法中文第二版——书
- 数据结构Java版教学计划编排
- 重庆理工大学软件工程、计算机学院
- Java语言程序设计与数据结构基础篇第
- 数据结构Java约瑟夫环
- 数据结构课程设计报告java+哈夫曼树
- 栈的实现,数据结构
- 数据结构 各种排序算法 java图形界面
- 数据结构 图(邻接矩阵) java图形界
- 玩转算法系列--数据结构精讲更适合
- JAVA语言程序设计与数据结构第十一版
- 15 尚硅谷大数据技术之Scala数据结构和
- 完整版数据结构与算法分析_Java语言描
评论
共有 条评论