• 大小: 27KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: Java
  • 标签: 数据结构  

资源简介

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

资源截图

代码片段和文件信息

/*
 * @(#)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\linkedQueue.java

     文件       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


评论

共有 条评论