文件合并/分解器的原理和实现[第一篇]
我最近在做一个网站,由于上传到服务器的文件比较多,所以用FTP就非常的慢。最为理想的方式就是用RAR打包后上传到服务器在解压。不过,由于各种因素的影响。不能随时远程登录到服务器,所以想解压就不是那么容易。本来想写个用RAR解压的程序。可是研究了一下心情不好。就决定自己写一个把多个文件合并成一个大的二进制文件,然后再分解的程序。
原理:大二进制文件 = 索引文件长度(转换为二进制) + 文件索引文件 + N个具体的文件
索引文件长度采用64个字符来保存,如果长度数字不足64位则用字符X来不足64位。
文件索引文件:保存了N个文件的文件名,文件夹路径,文件大小,和打包顺序的信息。文件索引文件为一个对象串行化后保存形成的一个XML格式文件。
打包原理:
1.先查询N个具体的文件,把文件信息保存在FileIndexXml里面,然后把FileIndexXml串行化成一个文件即索引文件
2.获取索引文件的文件长度。
3.把索引文件的文件长度转换为byte[]并用FileStream写入最终的文件
4.读取索引文件并用FileStream把读取的二进制数据Append到最终文件
5.依次把N个文件用FileStream把读取的二进制数据Append到最终文件
分解原理:
1.读取文件的前64个字节得到索引文件的长度,
2.然后根据索引文件的长度读取出索引文件并用转换为FileIndexXml对象
3.根据FileIndexXml对象里面的文件信息一次读取出文件并保存到响应的位置。
这样就把多个文件先合并成一个文件,然后又能分解成多个文件了。

浙公网安备 33010602011771号