資源簡介
利用哈夫曼編碼進行信息通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,
這要求在發送端通過一個編碼系統對待傳數據預先編碼,在接收端將傳來的數據進行譯碼(復原)。
對于雙工信道(即可以雙向傳輸信息的信道),每端都需要一個完整的編/譯碼系統。試為這樣的信
息收發站寫一個哈夫曼碼的編/譯碼系統。

代碼片段和文件信息
/*
?*?@(#)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
評論
共有 條評論