文件合并/分解器的原理和实现[第一篇]

     最近在做一个网站,由于上传到服务器的文件比较多,所以用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对象里面的文件信息一次读取出文件并保存到响应的位置。
   
这样就把多个文件先合并成一个文件,然后又能分解成多个文件了。

 

posted @ 2009-02-22 20:03  君无忌  阅读(1183)  评论(3)    收藏  举报