思路见:
java实现哈夫曼编码压缩 - CoderDreams - 博客园 (cnblogs.com)
java实现哈夫曼编码解压 - CoderDreams - 博客园 (cnblogs.com)
新增代码
/** * 压缩文件 * * @param src 压缩文件的全路径 * @param dstFile 压缩后存放的路径 */ private static void zipFile(String src, String dstFile) { FileInputStream is = null; FileOutputStream os = null; ObjectOutputStream oos = null; try { // 创建IO流 is = new FileInputStream(src); // 创建和源文件相同大小的byte数组 byte[] bytes = new byte[is.available()]; // 读取文件 is.read(bytes); // 解压 byte[] huffmanZip = huffmanZip(bytes); // 创建文件输出流存放压缩文件 os = new FileOutputStream(dstFile); // 创建和输出流相关的对象输出流 oos = new ObjectOutputStream(os); // 这里以对象的方式进行输出压缩文件,方便恢复 oos.writeObject(huffmanZip); // 最后将编码表写入 oos.writeObject(huffmanCodes); } catch (Exception e) { System.out.println(e); } finally { try { is.close(); os.close(); oos.close(); } catch (IOException e) { e.printStackTrace(); } } }
测试方法
public static void main(String[] args) { String srcFile = "D:\\图片\\Camera Roll\\1.jpg"; String dstFile = "D:\\图片\\dst.zip"; zipFile(srcFile, dstFile); System.out.println("压缩成功"); }