RT, 就是想把不同种类的N个文件打包成一个文件(file_name.pack), 需要拆分文件时再选择file_name.pack, 拆分成多个文件放到指定目录下。问题:整合为一个文件:把零碎文件以二进制打开, 然后依次写入 file_name.pack应该就可以了。 但如何再把file_name.pack拆分呢? 比如说有BMP. JPG. 我还要考虑它们的存储格式?求解

解决方案 »

  1.   

    文件类型和大小写进.pack里面,拆分的时候读类型和大小不就行了 小小建议。。
      

  2.   

    这个是非常灵活的,完全依赖于你自己怎么定义。所以文件一视同仁全部看作binary流,自己开辟一块区域对文件表进行管理,这就类似于windows系统里的FAT,至于具体存储一些什么信息,这个要看自己的需求,但是一般来说每个文件的长度是必不可少的(否则你不知道该怎么解压),然后是文件名,如果考虑解压速度,可以设定两个DWORD域存储文件开始和结尾位置。
    整合时程序维护一个文件信息表,然后把所有文件数据整合到一起生成一个.X文件,最后把文件头信息数据写进去(写到哪儿完全看你自己怎么想,别人都不知道)。
    甚至可以做到文件交替存储,固定算法存储,看你的设计要求了。如果要求没那么高,那就流水账。
    很简单的
      

  3.   

    file_name.pack文件中,主要分为两部分(头和体),头部分写入保存文件的信息(文件名,大小等),体部分保存文件内容。可以写成类似XML的格式。例如:<package>
        <file>
            <head>
                <name>1.jpg</name>
                <size>1024</size>
            </head>
            <body>...</body>
        </file>
        <file>
             ...
        </file>
    </package>
      

  4.   

    很简单的方法是:一、打包
    新建目标文件
    for(int i=0;i<文件数;i++);
    {
       打开文件i
       获取文件i长度
       长度写入目标
       文件写入目标
       关闭文件i
    }
    关闭目标文件二、解包
    打开包文件
    for(int i=0;i<文件数;i++);
    {
       新建文件i
       从包读取长度;
       按长读取数据
       数据写入文件i
       关闭文件i
    }
    关闭包文件