亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? huffmanframe.java

?? 利用霍夫曼樹實現文本壓縮。如果是文本可以壓縮到40%的大小
?? JAVA
字號:
package org.galaxy_OPEN.www.datastructures.huffman;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import java.io.*;
import java.util.*;

public class HuffmanFrame extends JFrame implements ActionListener {
	private FilterFileChooser fileChooser = null;

	private JTextField filePathField = new JTextField(60);

	private JButton jbOpen = new JButton("打開");

	private JButton jbCompress = new JButton("壓縮");

	private JButton jbDecompress = new JButton("解壓");

	private JTextArea message = new JTextArea();

	private File file = null;

	// construct the frame
	public HuffmanFrame() {
		setTitle("文本壓縮 - Galaxy-OPEN");
		setSize(450, 350);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

		Container content = getContentPane();

		filePathField.setEditable(false);
		filePathField.setBackground(Color.WHITE);
		filePathField.setForeground(Color.BLACK);
		jbOpen.addActionListener(this);
		JPanel northPane = new JPanel();
		northPane.setLayout(new FlowLayout());
		northPane.add(filePathField);
		northPane.add(jbOpen);
		content.add(northPane, BorderLayout.NORTH);

		JScrollPane scrollPane = new JScrollPane(message);
		setMessage("文件壓縮程序,請選擇文件導入。");
		message.setEditable(false);
		message.setWrapStyleWord(true);
		content.add(scrollPane, BorderLayout.CENTER);

		jbCompress.addActionListener(this);
		jbDecompress.addActionListener(this);
		JPanel southPane = new JPanel();
		southPane.setLayout(new FlowLayout());
		southPane.add(jbCompress);
		southPane.add(jbDecompress);
		content.add(southPane, BorderLayout.SOUTH);

		// center the window
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = getSize();
		if (frameSize.height > screenSize.height) {
			frameSize.height = screenSize.height;
		}
		if (frameSize.width > screenSize.width) {
			frameSize.width = screenSize.width;
		}
		setLocation((screenSize.width - frameSize.width) / 2,
				(screenSize.height - frameSize.height) / 2);

		// set look and feel
		try {
			UIManager
					.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			SwingUtilities.updateComponentTreeUI(this);
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "錯誤!",
					"系統錯誤,即將退出。請與制作人員聯系/n----GalaxyOPEN@gmail.com",
					JOptionPane.ERROR);
			// e.printStackTrace();
		}

		setResizable(false);
	}

	public void setMessage(String text) {
		String date = (new Date()).toString();
		date = date.substring(11, 19) + "-->";
		message.insert(date + text + "\n", 0);
	}

	public boolean isOutputFileExists(String outPath) {
		File outputFile = new File(outPath);
		return outputFile.exists() ? true : false;
	}

	public String getOperate() {
		String operate = null;
		if (file != null) {
			String name = file.getName();
			int length = name.length();

			if ((name.endsWith(".huf") || name.endsWith(".HUF"))
					&& name.charAt(length - 4) == '.') {
				operate = "decompress";
			} else {
				operate = "compress";
			}
		}
		return operate;
	}

	private void openFile(String op) {
		fileChooser = new FilterFileChooser(op);
		int choice = fileChooser.showOpenDialog(this);
		if (choice == JFileChooser.APPROVE_OPTION) {
			file = fileChooser.getSelectedFile();
			if (file == null) {
				return;
			}
			String filePath = file.getPath();
			setMessage("已選擇文件:" + filePath);
			filePathField.setText(filePath);
		}
	}

	private void compressFile() {
		if (file == null) {
			openFile("compress");
		}
		String operate = getOperate();
		if (operate == null) {
			return;
		} else if (operate.equals("compress")) {
			jbCompress.setEnabled(false);
			String inPath = file.getPath();
			String outPath = getPath("compress");
			if (isOutputFileExists(outPath)) {
				JOptionPane.showMessageDialog(this, "文件已經存在!", "警告",
						JOptionPane.WARNING_MESSAGE);
				setMessage(outPath + " 文件已經存在!");
				jbCompress.setEnabled(true);
				filePathField.setText("");
				file = null;
				return;
			}
			setMessage("準備壓縮,請稍候……");

			// compress
			try {
				Compress com = new Compress(this, inPath, outPath);
				com.encode();
			} catch (IOException exc) {
				JOptionPane.showMessageDialog(this, "壓縮文件\n" + outPath
						+ "\n過程發生錯誤!", "I/O錯誤", JOptionPane.ERROR_MESSAGE);
			}
			jbCompress.setEnabled(true);
			filePathField.setText("");
			file = null;
		}
	}

	private void decompressFile() {
		if (file == null) {
			openFile("decompress");
		}
		String operate = getOperate();
		if (operate == null) {
			return;
		} else if (operate.equals("decompress")) {
			jbDecompress.setEnabled(false);
			String inPath = file.getPath();
			String outPath = getPath("decompress");

			if (isOutputFileExists(outPath)) {
				JOptionPane.showMessageDialog(this, "文件已經存在!", "警告",
						JOptionPane.WARNING_MESSAGE);
				setMessage(outPath + " 文件已經存在!");
				jbCompress.setEnabled(true);
				filePathField.setText("");
				file = null;
				return;
			}
			setMessage("準備解壓縮,請稍候……");

			// decompress
			try {
				Decompress dec = new Decompress(this, inPath, outPath);
				dec.decode();
			} catch (IOException exc) {
				exc.printStackTrace();
				JOptionPane.showMessageDialog(this, "解壓縮文件\n" + outPath
						+ "\n過程發生錯誤!", "I/O錯誤", JOptionPane.ERROR_MESSAGE);
			} catch (ClassNotFoundException exc) {
				JOptionPane.showMessageDialog(this, "解壓縮文件\n" + outPath
						+ "\n過程發生錯誤!文件已被損壞!", "錯誤", JOptionPane.ERROR_MESSAGE);
			}

			jbDecompress.setEnabled(true);
			filePathField.setText("");
			file = null;
		} else if (operate.equals("compress")) {
			JOptionPane.showMessageDialog(null, "該文件尚未壓縮,請選擇“壓縮”!", "錯誤!",
					JOptionPane.ERROR_MESSAGE);
		}
	}

	private String getPath(String op) {
		String fileExt = null;
		if (op.equals("compress")) {
			fileExt = ".huf";
		} else if (op.equals("decompress")) {
			fileExt = "";
		}
		String filePath = null;
		if (file != null) {
			String fileName = file.getName();
			filePath = file.getPath();
			int extIndex = fileName.indexOf('.');
			int nameIndex = filePath.indexOf(fileName);
			fileName = fileName.substring(0, extIndex) + fileExt;
			filePath = filePath.substring(0, nameIndex) + fileName;
		}
		return filePath;
	}

	public void actionPerformed(ActionEvent e) {
		JButton jb = (JButton) e.getSource();
		if (jb == jbOpen) {
			openFile("all");
		} else if (jb == jbCompress) {
			compressFile();
		} else if (jb == jbDecompress) {
			decompressFile();
		}
	}

	public static void main(String[] args) {
		try {
			HuffmanFrame mf = new HuffmanFrame();
			mf.setVisible(true);
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null,
					"系統內部錯誤,程序即將退出!請與制作人員聯系/n----GalaxyOPEN@gmail.com", "系統錯誤",
					JOptionPane.ERROR_MESSAGE);
		}
	}

	public File getFile() {
		return file;
	}
}

// custom file chooser, only choose picture files
class FilterFileChooser extends JFileChooser {
	private FileFilter[] fileFilter = new FileFilter[] { new HuffmanFileFilter(
			"待解壓文件(*.huf)", new String[] { ".huf", ".HUF" }) };

	public FilterFileChooser(final String op) {
		if (op.equals("decompress")) {
			addChoosableFileFilter(fileFilter[0]);
		}
		setMultiSelectionEnabled(false);
	}

	// file filter
	private class HuffmanFileFilter extends javax.swing.filechooser.FileFilter {
		protected String desc;

		protected String[] extensions;

		public HuffmanFileFilter(final String desc, final String[] extensions) {
			this.desc = desc;
			this.extensions = (String[]) extensions.clone();
		}

		public boolean accept(final File f) {
			if (f.isDirectory() == true) {
				return true;
			}

			final String name = f.getName();
			final int length = name.length();

			for (int i = 0; i < extensions.length; i++) {
				final String ext = extensions[i];

				if (name.endsWith(ext)
						&& name.charAt(length - ext.length()) == '.') {
					return true;
				}
			}
			return false;
		}

		public String getDescription() {
			return desc;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品在线一区| 99r精品视频| 欧美tk—视频vk| 免费看欧美美女黄的网站| 激情av综合网| 欧美精彩视频一区二区三区| 久久不见久久见免费视频7| 欧美成人在线直播| 国内精品伊人久久久久av一坑| 337p日本欧洲亚洲大胆精品| 国产不卡视频一区二区三区| 国产精品久久久久久久久晋中 | 一区二区视频免费在线观看| 99久久国产综合精品色伊| 中文字幕亚洲综合久久菠萝蜜| 国产一区二区不卡| 亚洲人精品一区| 欧美高清视频一二三区| 国产激情精品久久久第一区二区 | 欧美成人福利视频| 9i在线看片成人免费| 亚洲午夜视频在线| 国产拍揄自揄精品视频麻豆| 欧洲亚洲精品在线| 成人一区二区在线观看| 一区二区三区久久久| 日韩亚洲欧美一区二区三区| 91丨国产丨九色丨pron| 国产一区二区三区免费播放| 亚洲chinese男男1069| 成人免费在线视频观看| 精品欧美一区二区久久| 欧美一卡在线观看| 欧美影院一区二区三区| 国产激情视频一区二区三区欧美 | 91福利在线导航| 日本丶国产丶欧美色综合| 国产精品18久久久久久久久久久久 | 菠萝蜜视频在线观看一区| 激情欧美一区二区三区在线观看| 亚洲国产色一区| 一区二区欧美在线观看| 亚洲激情自拍偷拍| 一区二区三区电影在线播| 日韩理论片在线| 亚洲一区欧美一区| 日产国产欧美视频一区精品| 爽好久久久欧美精品| 亚洲风情在线资源站| 亚洲男人的天堂网| 午夜精品成人在线视频| 视频在线观看国产精品| 老司机精品视频一区二区三区| 麻豆精品在线看| 成人免费福利片| 欧美日韩三级视频| 久久久久久影视| 亚洲一区二区在线视频| 久久不见久久见中文字幕免费| 国产另类ts人妖一区二区| 成a人片亚洲日本久久| 一本久道久久综合中文字幕| 日韩一区二区视频| 有码一区二区三区| 亚洲成年人网站在线观看| 国产成人啪免费观看软件| 在线中文字幕一区| 久久日一线二线三线suv| 亚洲午夜免费视频| 国产成人免费网站| 精品国产在天天线2019| 亚洲国产欧美在线| 91视频你懂的| 亚洲狼人国产精品| 蜜臀av一区二区在线免费观看| 91麻豆国产福利在线观看| 久久久五月婷婷| 日韩国产一二三区| 欧美日产国产精品| 亚洲美女视频一区| 一本一道久久a久久精品| 亚洲欧洲国产日本综合| youjizz国产精品| 精品国产乱码91久久久久久网站| 日本成人中文字幕| 日韩一区二区在线免费观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美午夜精品久久久久久孕妇| 亚洲欧美国产三级| 欧美人xxxx| 蜜桃视频在线观看一区二区| 91精品国产一区二区三区蜜臀| 日产精品久久久久久久性色| 欧美xxxxx牲另类人与| 美女高潮久久久| 久久精品一区二区三区不卡 | 久久精品久久综合| 中文字幕在线不卡一区| 欧美乱妇15p| 国产成人综合在线播放| 中文字幕一区二区三区在线观看 | 国产人伦精品一区二区| 大白屁股一区二区视频| 亚洲国产欧美一区二区三区丁香婷| 在线观看精品一区| 久久精品国产亚洲aⅴ| 亚洲色图欧洲色图婷婷| 国产欧美一区二区精品仙草咪| 欧美日本在线播放| 51精品久久久久久久蜜臀| 日本丶国产丶欧美色综合| 成人黄色777网| 91视频你懂的| 欧美日韩卡一卡二| 欧美卡1卡2卡| 欧美成人一区二区三区片免费| 51精品国自产在线| 欧美一卡在线观看| 欧美精品一区在线观看| 精品国产一区二区精华| 欧美本精品男人aⅴ天堂| 久久人人97超碰com| 国产精品美女久久久久久久网站| 中文在线一区二区| 一区二区三区国产| 日韩黄色小视频| 粗大黑人巨茎大战欧美成人| www.亚洲精品| 欧美一区二区精品在线| 精品免费一区二区三区| 国产精品久久99| 偷拍一区二区三区四区| 成人网页在线观看| 欧美电影一区二区| 国产精品色哟哟网站| 五月天中文字幕一区二区| 国产精品资源在线看| 在线看不卡av| 国产精品人人做人人爽人人添| 一区二区成人在线| 成人一区二区三区| 欧美夫妻性生活| 一区二区三区美女| 成人在线综合网| 欧美精品一区二区蜜臀亚洲| 一区二区三区色| av网站免费线看精品| 日韩色视频在线观看| 午夜精品福利一区二区三区av| 成人精品小蝌蚪| 国产色91在线| 国产乱码一区二区三区| 91精品国产黑色紧身裤美女| 亚洲欧美日韩久久精品| 国产乱人伦偷精品视频不卡| 欧美精品一区二区久久婷婷| 日韩精品一二三| 精品久久久久久亚洲综合网| 蜜乳av一区二区| 久久综合九色综合欧美亚洲| 久久97超碰色| 国产欧美一区二区三区在线看蜜臀| 久久精品国产网站| 欧美高清在线一区二区| 91香蕉视频在线| 美女久久久精品| 国产日产精品一区| 91免费观看国产| 美腿丝袜亚洲综合| 国产日韩欧美精品电影三级在线| 国产91精品一区二区麻豆网站| 中文字幕免费一区| 欧美日韩精品免费观看视频| 日日夜夜免费精品视频| 精品国产三级电影在线观看| 国产成人精品免费在线| 午夜国产精品影院在线观看| 久久久久久久综合| 欧美亚洲国产一区二区三区| 精品一区二区三区视频在线观看 | 欧美一区二区视频网站| 国产一区91精品张津瑜| 亚洲精品综合在线| 久久综合99re88久久爱| 欧美性受xxxx黑人xyx性爽| 激情小说欧美图片| 亚洲一区二区三区不卡国产欧美 | 久久―日本道色综合久久| 在线免费不卡视频| 91视频一区二区三区| 国产成人精品网址| 国产伦精品一区二区三区免费 | 在线一区二区三区四区五区| 国产伦理精品不卡| 美腿丝袜亚洲三区| 久久99久久精品欧美| 日本中文一区二区三区| 日本不卡视频在线观看| 亚洲成人午夜影院| 免费看精品久久片|