java实现哈夫曼编码的文件压缩
java实现哈夫曼编码的文件压缩
思路见:
新增代码
/**
* 压缩文件
*
* @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("压缩成功");
}