Skip to content

IYATT-yx/assignment-5-COMP1521-a-file-archiver

Repository files navigation

客户要求实现 Subset0,实际做了 Subset 0 和 Subset 1
这个作业使用 dcc 编译器,dcc 是学校自己开发的,项目地址:https://github.com/COMP1511UNSW/dcc


2024.4.17
这是个未交付的作业,最开始发给我,我看了以后,给出了报价。另外因为作业要求错误输出需要和学校系统里的参考实现匹配,我说了需要提供学校的虚拟实验平台(VLAB)的账号,这样才能具体研究错误输出。不过后面就没有回信了,我也没问中介大哥。前天下午突发奇想又看了看,把 Subset 0 要求的功能实现了,只是因为没有条件研究错误输出在什么情况显示什么,这个就是我自己发挥的了。


2024.4.18
晚上闲来无事,又看了下,把 Subset 1 的检查 hash 值的功能做了。


2024.4.19
上午花了一个多小时又把 Subset 1 的解包部分做完了。相当于整体完成了 Subset 0 (查看归档包内的子文件)和 Subset 1(检查归档包子文件完整性和从归档包提取子文件)。
我才发现一个问题,就是一开始的设计就是把整个归档包读进内存处理。如果是小文件还好,大文件直接爆内存。相当于一个压缩软件要解压一个 100G 的文件,就把 100G 全部读进内存。实际应用中,最多可能只读取文件信息,每个子包应该是按一定量读取处理,处理完再继续读取,一直等全部处理完。 具体实现的方案也简单,每个子文件的结构体记录一下子文件内容在归档文件中的开始位置,然后内容长度这个参数是已经存在的,这样需要的时候就可以通过 fseek 设置开始读取位置,读取指定长度,就能实现按需读取。
后面的就不打算做了,再做也没有人给工资。后面无非就是将文件打包到归档包,以及采用特殊格式的归档包,只要理解了这个归档包的结构,都不难。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published