# huffman-coding **Repository Path**: Qianrenni/huffman-coding ## Basic Information - **Project Name**: huffman-coding - **Description**: 这是一个基于哈夫曼编码的文本压缩与解压缩工具,使用Java Swing实现图形用户界面。项目能够统计文本字符频率,构建哈夫曼树,生成编码表,实现文本的压缩和解压缩功能。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-10 - **Last Updated**: 2025-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java ## README # 哈夫曼编/译码器 ## 项目概述 这是一个基于哈夫曼编码的文本压缩与解压缩工具,使用Java Swing实现图形用户界面。项目能够统计文本字符频率,构建哈夫曼树,生成编码表,实现文本的压缩和解压缩功能。 ## 效果预览 ![img.png](img.png) ## 功能特性 - **字符频率统计**:自动分析输入文本中各个字符的出现频率 - **哈夫曼树构建**:根据字符频率构建最优哈夫曼树 - **编码生成**:为每个字符生成唯一的哈夫曼编码 - **文本压缩**:将原始文本转换为哈夫曼编码并压缩存储 - **文本解压**:将压缩文件还原为原始文本 - **可视化界面**: - 显示哈夫曼树结构 - 分页查看编码文本 - 文件选择与操作功能 ## 文件结构 ``` src/hufuman/ ├── ByteTansform.java // 字节转换工具类 ├── File_Operation.java // 文件操作类 ├── GenerateHuffmanTree.java // 哈夫曼树生成类 ├── Main.java // 程序入口 └── MyJFrame.java // 图形界面类 ``` ## 核心类说明 1. **GenerateHuffmanTree** - 构建哈夫曼树 - 生成字符编码表 - 提供哈夫曼树可视化方法 2. **File_Operation** - 文件读写操作 - 字符频率统计 - 编码/解码实现 - 哈夫曼树序列化与反序列化 3. **ByteTansform** - 处理二进制位与字节的转换 - 管理编码数据的存储 4. **MyJFrame** - 图形用户界面实现 - 文件选择对话框 - 分页显示功能 ## 使用说明 1. 运行`Main`类启动程序 2. 点击"选择文本编码"按钮选择要压缩的文本文件 3. 程序会自动: - 统计字符频率 - 构建哈夫曼树 - 生成编码表 - 压缩文件 4. 压缩后的文件保存在原文件同目录下的`[filename]_dir`文件夹中 5. 点击"文本解码"按钮可解压文件 ## 输出文件 程序会在`[filename]_dir`目录下生成: - `CodeFile.dat` - 压缩后的二进制文件 - `hfmTree.dat` - 哈夫曼树序列化文件 - `CodePrint.txt` - 字符编码表 - `TextFile.txt` - 解压后的文本文件 ## 技术特点 - 使用优先队列构建哈夫曼树 - 实现高效的位级操作进行压缩 - 支持大文件处理(使用缓冲区) - 图形化显示哈夫曼树结构 - 分页查看编码内容 ## 系统要求 - Java 8或更高版本 ## 注意事项 - 仅支持.txt文本文件 - 压缩率取决于文本内容的字符分布