首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA解压缩ZIP文件04——解析ZIP文件结构

使用压缩软件打开一个ZIP文件的时候,可以看到这个ZIP文件里面的文件信息,如下是使用7z压缩软件打开一个xlsm Excel文件: ?...从中主要可以看到文件的名称,文件压缩后的大小以及文件压缩前的大小。 其实这个时候,7z压缩软件并没有真正解压这个ZIP文件,仅仅是读取了它的信息,而这些信息的读取就是解析ZIP文件结构的过程。...ZIP文件结构 在前面介绍ZIP压缩过程的时候,主要是讲了压缩软件如何将原始的文件进行压缩,然后保存压缩信息,保存压缩信息之前,压缩软件还会在压缩信息的前面保存一些文件的信息,主要结构如下: 文件1的LocalFileHeader...As String '扩展区 End Type 使用每一个CentralDirectoryHeader结构信息里记录的对应LocalFile Header在文件中的起始位置进行解析:...文件,获取zip的压缩文件信息 'FileName ZIP文件完整路径 'Return 返回出错信息 Function Parse(FileName As String) As String

3K20
您找到你想要的搜索结果了吗?
是的
没有找到

VBA解压缩ZIP文件00

记录下自己学习使用VBA实现解压ZIP的过程,主要参考文章: http://www.cnblogs.com/esingchan/p/3958962.html 只使用VBA语言本身的一些东西: Sub、...什么是ZIP 使用过电脑的应该都接触过ZIP文件,比如Windows系统,选择文件或者文件夹,右键点击发送到压缩(zipped)文件夹,这个就是完成了对文件的压缩,所使用的压缩文件格式就是ZIP,生成的文件后缀就是...更为常见的应该就是2007版本以上的Office文件了,包括Excel、Word、PPT等,默认都是使用ZIP格式保存文件的,可以将文件的后缀修改为.zip后,直接双击打开,Windows系统也是自带了压缩和解压缩...有什么作用 实现这么一个功能其实没什么很大作用,而且支持ZIP压缩和解压缩的东西应该非常的多,但是个人认为通过这么一个学习过程,对本身VBA的学习还是很有帮助的。...另外可以使用VBA代码在内存中解压缩ZIP数据,在某些场合还是可以用到的。

1.1K30

linux .zip文件 解压缩命令的简单使用

windows系统下常见的压缩格式有 .zip .rar linux系统下 常见的 压缩格式有 .zip .gz .bz2 .tar.gz .tar.bz2 下面我来简单的介绍一下 linux...系统下 zip压缩命令的使用方法 .zip 压缩命令的使用方法 .zip使用方法非常的简单 使用 zip 命令即可 压缩文件 格式为 zip 压缩文件名 源文件 如图 mywork...目录下 有 a11.txt a1.txt a2.txt b.txt c.txt 等文件 下面我们压缩一下 a11.txt 使用命令 zip a11.txt.zip a11.txt 即可压缩成功...zip 命令还可以用来压缩目录的 压缩目录 格式为 zip 压缩文件名 源目录 如下图 我们将要压缩 mywork 目录 使用 命令 zip -r mywork.zip mywork...即可压缩成功 .zip 解压命令的使用方法 解压命令 格式为 unzip 压缩文件名 如图我删除 mywork 目录 如何使用 unzip mywork.zip 即可把文件解压 发布者

2.7K20

VBA解压缩ZIP文件02——压缩过程

要实现解压缩肯定得了解压缩的过程,解压缩相比压缩来说是简单很多,简单说一下压缩的过程。...ZIP压缩过程 01 扫描文件 压缩程序首先会扫描被压缩的文件,然后将文件的信息分为3类: literal 未被处理的 length 长度信息 distance 距离信息...ZIP压缩是按照Byte为单位对原始文件进行处理的,literal代表的就是原始的Byte数据并没有被压缩。...最前面使用3个bit记录Header信息: 第一个比特: 如果是1,表示此部分为最后一个压缩数据块; 否则表示这是.ZIP文件的某个中间压缩数据块,后面还有其他数据块 第2、3比特表示3个选择: 00...注意:ZIP是对每个文件都单独压缩的,而且每个文件还可能会分块进行压缩(这也是Header的第1个bit的作用,标志是否是最后1个块),所以每个使用了动态Huffman的压缩的块都是上面这种结构。

2.1K20

VBA解压缩ZIP文件10——解压-动态Huffman

使用动态Huffman压缩的数据块,在数据块的开头仍然是3个bit的Header,第2个bit是0、第3个bit是1,因为读取过程是先读取低位,再读取高位,所以结果应该是二进制10。...02 解析h1、h2 Huffman树 得到了h3后,继续读取压缩数据块后面的bit流,并使用h3进行解码,得到SQ1,使用行程编码进行解析,得到CL1,然后创建h1(编码literal和length...继续读取压缩数据块后面的bit流,并使用h3进行解码,得到SQ2,使用行程编码进行解析,得到CL2,然后创建h2(编码distance)Huffman树。...PK认为CCL个数不会低于4个,即使对于整个文件只有1个字符的情况。...'ZIP里的压缩算法称为Deflate算法 '对应的解压缩算法称为Inflate Private Function InflateByHuffman(h1 As CHuffmanTree, h2 As

69310

VBA解压缩ZIP文件08——解压-没有压缩

解析了ZIP文件结构后,我们就能够通过LocalFileHeader的信息计算出压缩信息所在ZIP文件中的偏移,并读取相应的压缩数据。...读取了压缩数据之后,接下来就是对数据进行解压,在VBA解压缩ZIP文件02——压缩过程中讲到了,有3种压缩方式,最简单的就是没有压缩。...因为ZIP压缩数据的存储最小单位是bit,某一个压缩数据块,它很有可能不是从某个Byte开始的,所以在解压的过程中,需要一直记录bit的位置,在碰到没有压缩的数据块的时候,补齐到8的整数倍。...补齐之后,压缩数据块使用2个byte存储了没有压缩过的数据的长度LEN,再用2个byte记录了LEN的补码NLEN,根据这个,解压代码如下: Private Function InflateNoCompression

1.5K20

linux中zip文件解压命令,Linux中zip压缩和unzip解压缩命令使用方法

在Linux中,我们可以利用命令进行文件压缩,即zip压缩和unzip解压缩,这篇文章主要介绍了详解Linux中zip压缩和unzip解压缩命令及使用详解,本文给大家介绍的非常详细,需要的朋友可以参考下...,unzip执行后覆盖原有文件 -P:使用zip的密码选项 -q:执行时不显示任何信息 -s:将文件名中的空白字符转换为底线字符 -V:保留VMS的文件版本信息 -X:解压缩时同时回存文件原来的UID/...GID 下面给大家介绍下Linux – zip压缩、unzip解压缩命令的使用详解 由于服务器使用的是 CentOS 系统,对于文件的压缩和解压缩免不了要使用命令操作,这里我对 Linux 系统下常用的...zip -d new1.zip my18.doc 2,主要参数 -f 更新现有的文件 -u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中 -d 指定文件解压缩后所要存储的目录...或查看压缩文件目录,但不解压 -T 将压缩文件内的所有文件的最新变动时间设为解压缩时候的时间 -x 指定不要处理 .zip 压缩文件中的哪些文件 -d 指定文件解压缩后所要存储的目录 -n 解压缩时不要覆盖原有的文件

6.7K30

VBA解压缩ZIP文件03——解压准备工作

解压缩ZIP文件,所以肯定需要读写文件的功能,为了方便,把VBA中对文件的读写功能进行一个简单的封装,方便使用。...ZIP文件压缩后,保存数据使用的最小单位是bit,注意不是Byte,计算机的1Byte=8bit,正常在VBA中操作的最小单位是Byte,为了方便读取bit位的数据,写几个简单的函数。...01 CFile文件读写 主要是使用类模块对文件操作Open、Put、Get等关键字的简单封装,这样使用起来就更加的方便。...long类型会溢出 Private lFileLen As Long Private num_file As Integer '写入文件 Function WriteFile(b() As Byte)...解压ZIP的过程中,需要不停的从压缩数据的Byte数组中读取需要的bit,实现几个简单的函数: '取某一位的Bit Function GetBitFromByte(b As Byte, ZeroBaseIndex

1.4K40

如何使用宝塔 linux 面板上传文件解压缩 zip 和 tar.gz

使用宝塔 linux 面板的初学者有时候搞不懂一些操作设置,比如有人会问:如何使用宝塔 linux 面板上传文件?宝塔 linux 如何解压上传的文件?下面魏艾斯博客就来解答一下。 ?...另外宝塔 linux 面板是不能上传文件夹的,你可以在本地把文件夹压缩一下,上传压缩包,然后再解压缩就可以用了。...老魏上传了一个 zip 压缩包来举例子,因为接下来要说的是如何使用宝塔 linux 面板解压缩 zip 文件。 目前宝塔 linux 面板支持的压缩格式有 zip和 tar.gz。...把鼠标光标放到上传的压缩文件名上面,右侧会出现“解压”按钮,点击后出现解压缩路径,也就是解压缩之后的文件放在哪里。最后点击解压就完成了。...宝塔 linux 面板解压缩 tar.gz 文件也和上面一样的操作这里就不再重复了。 ?

5.8K40

LINUX 命令 之 zip 解压缩

1.zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip命令 unzip...-o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/ -o:不提示的情况下覆盖文件; -d:-d /home/sunny 指明将文件解压缩到.../home/sunny目录下; 3.其他 zip -d myfile.zip smart.txt 删除压缩文件中smart.txt文件 zip -m myfile.zip ..../rpm_info.txt 向压缩文件中myfile.zip中添加rpm_info.txt文件 ——————————————————————————- 要使用 zip 来压缩文件,在 shell...要抽取 zip 文件的内容,键入以下命令: unzip filename.zip 你可以使用 zip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔: zip -r filename.zip

12K30
领券