Huffman文件压缩之文件夹压缩

该博客介绍了如何利用Huffman编码实现文件夹压缩。首先,统计每个字节的出现次数来构建Huffman树,然后用编码替换字节实现压缩。在文件夹压缩过程中,通过opendir和readdir函数深度优先遍历目录,将所有文件路径存入vector并逐一压缩。
摘要由CSDN通过智能技术生成

思路

  应用huffman是带权路径最小二叉树这个性质,完成的文件压缩。我们可以应用这个性质。让一个文件中,每个字符出现的次数作为权值。这样离根节点越近的节点,它的字符出现的次数就越多。然后根据这个节点在父节点左,有效编码为0,在右,有效编码为1,从跟遍历到该节点,得到相应的huffman编码,然后用huffman编码去替代该文件中该字符得而实现压缩。
  其实上面说的是字符,我们不应该单单把它看成一个字符。而是应该把它当成在单个字节中的一个数字。我们实际不是统计每个字符出现的次数,而是统计的是在待压缩文件中,每个字节相应的数字在该文件中出现了多少次。一个字节,总共有256种数字。所以我们要统计一个文件中这256种数字到底出现了多少次,然后拿它们的次数去创建huffman树,得到编码后完成压缩。
  我的文件夹压缩就是基于上面huffman压缩的实现原理。我压缩文件夹时候,先调用了opendir函数,然后再调用了readdir函数,根据深度优先遍历了该文件夹(目录)下的所有文件,然后把所有文件的路径保存到了一个vector中。最后一个一个压缩vector中的文件,从而实现的压缩文件夹。

遍历目录时思路图

这里写图片描述

压缩思路

通过对文件每一个字节进行次数统计,并建立huffman tree

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值